aboutsummaryrefslogtreecommitdiffstats
path: root/vnfs/TestVNF/netconftemplates
diff options
context:
space:
mode:
authora.sreekumar <ajith.sreekumar@ericsson.com>2018-10-24 16:07:36 +0100
committera.sreekumar <ajith.sreekumar@ericsson.com>2018-10-24 16:08:17 +0100
commitf46c20006c23d119ffc1c83117d203ed649f687c (patch)
treea04482e2a418f557e7423f7cacd375db7c318687 /vnfs/TestVNF/netconftemplates
parent2233d21abae761e91d7b056644c6ac972e662d57 (diff)
Adding TestVNF netconf server
TestVNF netconf server is a partial implementation of a netconfserver for netconf termination. TestVNF is configurable and can be used for testing purposes. Issue-ID: INT-355 Change-Id: I98594d7df57ca14582159bb006d8df51dca74ec7 Signed-off-by: a.sreekumar <ajith.sreekumar@ericsson.com>
Diffstat (limited to 'vnfs/TestVNF/netconftemplates')
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yang69
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yin82
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yang53
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yin57
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yang267
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yin281
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config-schema.yang40
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.groovy83
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.groovy84
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response-bak.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.xml.bak276
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/hello.xml44
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yang122
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yin132
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yang1783
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yin1804
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yang111
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yin117
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yang426
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yin449
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yang675
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yin724
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yang718
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yin782
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yang559
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yin596
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yang433
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yin452
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yang570
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yin604
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yang323
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yin346
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yang501
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yin538
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yang132
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yin152
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yang938
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yin1035
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yang171
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yin186
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yang779
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yin833
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yang141
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yin155
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yang293
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yin314
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yang492
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yin514
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yang83
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yin89
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yang455
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yin479
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yang96
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yin105
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yang92
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yin99
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/rpc-reply.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.xml3
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/system/response.xml7
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/turing-machine/response.xml76
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply-template.xml1
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply.xml270
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/schema.xml359
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/schema2.xml17
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/schema3.xml197
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/send-event-schema.yang19
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/send-event/NA/response.groovy94
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/send-models-schema.yang19
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/send-models/NA/response.groovy133
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/server-config.properties2
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yang267
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yin281
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/validate/candidate/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/validate/running/response.groovy22
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yang78
-rw-r--r--vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yin91
102 files changed, 24302 insertions, 0 deletions
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yang
new file mode 100644
index 00000000..380f42de
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yang
@@ -0,0 +1,69 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module RCAPoCModel {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:oripWnc";
+ prefix "RCAPoCModel";
+
+
+
+ description "simulation of cellConfig iFLB PoC and sleeping eNodeB PoC. This
+ model represents a reduced view of /// EnodeB MOC's needed for
+ boths sleeping eNodeB PoC and iFLB PoC. Note. This model is not
+ a direct mapping from /// ECIM for ///-eNodeB. The mapping is
+ done by the smart adapter (SA).";
+
+ revision "2017-04-27" {
+ description "Initial revision of oripWnc model";
+ }
+
+
+ container MME {
+ description "MME managed element..";
+ leaf managedElementId {
+ description "The MME Managed Element ID";
+ type string;
+ config true;
+ }
+
+ list SnmpTargetsV2C {
+ key "snmpTargetV2CId";
+ leaf snmpTargetV2CId {
+ type string;
+ }
+ uses SnmpTargetV2C;
+ }
+
+ }
+
+
+ grouping SnmpTargetV2C {
+ description "SnmpTargetV2C";
+ leaf community {
+ config true;
+ description "SNMP community string.";
+ type string;
+ }
+ leaf address {
+ config true;
+ description "Host address (or DNS name) for the SNMP Trap target.";
+ type string;
+ }
+ leaf port {
+ config true;
+ description "UDP port number for this SNMP trap target.";
+ type string;
+ }
+ leaf operationalState {
+ config false;
+ description "The operational status of this SNMP target.";
+ type string;
+ }
+ leaf administrativeState {
+ config true;
+ description "Administrative state for the SNMP target. When LOCKED, for this MO instance traps will not be sent and access is not allowed.";
+ type string;
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yin
new file mode 100644
index 00000000..853565e9
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/RCAPoCModel@2017-04-27.yin
@@ -0,0 +1,82 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"><?xml version="1.0" encoding="UTF-8"?>
+<module name="RCAPoCModel"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:RCAPoCModel="urn:opendaylight:params:xml:ns:yang:oripWnc">
+ <yang-version value="1"/>
+ <namespace uri="urn:opendaylight:params:xml:ns:yang:oripWnc"/>
+ <prefix value="RCAPoCModel"/>
+ <description>
+ <text>simulation of cellConfig iFLB PoC and sleeping eNodeB PoC. This
+model represents a reduced view of /// EnodeB MOC's needed for
+boths sleeping eNodeB PoC and iFLB PoC. Note. This model is not
+a direct mapping from /// ECIM for ///-eNodeB. The mapping is
+done by the smart adapter (SA).</text>
+ </description>
+ <revision date="2017-04-27">
+ <description>
+ <text>Initial revision of oripWnc model</text>
+ </description>
+ </revision>
+ <container name="MME">
+ <description>
+ <text>MME managed element..</text>
+ </description>
+ <leaf name="managedElementId">
+ <description>
+ <text>The MME Managed Element ID</text>
+ </description>
+ <type name="string"/>
+ <config value="true"/>
+ </leaf>
+ <list name="SnmpTargetsV2C">
+ <key value="snmpTargetV2CId"/>
+ <leaf name="snmpTargetV2CId">
+ <type name="string"/>
+ </leaf>
+ <uses name="SnmpTargetV2C"/>
+ </list>
+ </container>
+ <grouping name="SnmpTargetV2C">
+ <description>
+ <text>SnmpTargetV2C</text>
+ </description>
+ <leaf name="community">
+ <config value="true"/>
+ <description>
+ <text>SNMP community string.</text>
+ </description>
+ <type name="string"/>
+ </leaf>
+ <leaf name="address">
+ <config value="true"/>
+ <description>
+ <text>Host address (or DNS name) for the SNMP Trap target.</text>
+ </description>
+ <type name="string"/>
+ </leaf>
+ <leaf name="port">
+ <config value="true"/>
+ <description>
+ <text>UDP port number for this SNMP trap target.</text>
+ </description>
+ <type name="string"/>
+ </leaf>
+ <leaf name="operationalState">
+ <config value="false"/>
+ <description>
+ <text>The operational status of this SNMP target.</text>
+ </description>
+ <type name="string"/>
+ </leaf>
+ <leaf name="administrativeState">
+ <config value="true"/>
+ <description>
+ <text>Administrative state for the SNMP target. When LOCKED, for this MO instance traps will not be sent and access is not allowed.</text>
+ </description>
+ <type name="string"/>
+ </leaf>
+ </grouping>
+</module>
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yang
new file mode 100644
index 00000000..fb3f17fa
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yang
@@ -0,0 +1,53 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+module acme-system {
+ namespace "http://acme.example.com/system";
+ prefix "acme";
+
+ organization "ACME Inc.";
+ contact "joe@acme.example.com";
+
+ description
+ "The module for entities implementing the ACME system.";
+
+ revision 2007-06-09 {
+ description "Initial revision.";
+ }
+
+ container system {
+ leaf host-name {
+ type string;
+ description "Hostname for this system";
+ }
+
+ leaf-list domain-search {
+ type string;
+ description "List of domain names to search";
+ }
+
+ container login {
+ leaf message {
+ type string;
+ description
+ "Message given at start of login session";
+ }
+
+ list user {
+ key "name";
+ leaf name {
+ type string;
+ }
+
+ leaf full-name {
+ type string;
+ }
+
+ leaf class {
+ type string;
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yin
new file mode 100644
index 00000000..a3235b8a
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/acme-system@2007-06-09.yin
@@ -0,0 +1,57 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"><module name="acme-system"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:acme="http://acme.example.com/system">
+ <namespace uri="http://acme.example.com/system"/>
+ <prefix value="acme"/>
+ <organization>
+ <text>ACME Inc.</text>
+ </organization>
+ <contact>
+ <text>joe@acme.example.com</text>
+ </contact>
+ <description>
+ <text>The module for entities implementing the ACME system.</text>
+ </description>
+ <revision date="2007-06-09">
+ <description>
+ <text>Initial revision.</text>
+ </description>
+ </revision>
+ <container name="system">
+ <leaf name="host-name">
+ <type name="string"/>
+ <description>
+ <text>Hostname for this system</text>
+ </description>
+ </leaf>
+ <leaf-list name="domain-search">
+ <type name="string"/>
+ <description>
+ <text>List of domain names to search</text>
+ </description>
+ </leaf-list>
+ <container name="login">
+ <leaf name="message">
+ <type name="string"/>
+ <description>
+ <text>Message given at start of login session</text>
+ </description>
+ </leaf>
+ <list name="user">
+ <key value="name"/>
+ <leaf name="name">
+ <type name="string"/>
+ </leaf>
+ <leaf name="full-name">
+ <type name="string"/>
+ </leaf>
+ <leaf name="class">
+ <type name="string"/>
+ </leaf>
+ </list>
+ </container>
+ </container>
+</module>
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yang
new file mode 100644
index 00000000..2a5a94f7
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yang
@@ -0,0 +1,267 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module turing-machine {
+ namespace "http://example.net/turing-machine";
+ prefix tm;
+
+ description
+ "Data model for the Turing Machine.";
+
+ revision 2013-12-27 {
+ description
+ "Initial revision.";
+ }
+
+ typedef tape-symbol {
+ type string {
+ length "0..1";
+ }
+ description
+ "Type of symbols appearing in tape cells.
+
+ A blank is represented as an empty string where necessary.";
+ }
+
+ typedef cell-index {
+ type int64;
+ description
+ "Type for indexing tape cells.";
+ }
+
+ typedef state-index {
+ type uint16;
+ description
+ "Type for indexing states of the control unit.";
+ }
+
+ typedef head-dir {
+ type enumeration {
+ enum "left";
+ enum "right";
+ }
+ default "right";
+ description
+ "Possible directions for moving the read/write head, one cell
+ to the left or right (default).";
+ }
+
+ grouping tape-cells {
+ description
+ "The tape of the Turing Machine is represented as a sparse
+ array.";
+ list cell {
+ key "coord";
+ description
+ "List of non-blank cells.";
+ leaf coord {
+ type cell-index;
+ description
+ "Coordinate (index) of the tape cell.";
+ }
+
+ leaf symbol {
+ type tape-symbol {
+ length "1";
+ }
+ description
+ "Symbol appearing in the tape cell.
+
+ Blank (empty string) is not allowed here because the
+ 'cell' list only contains non-blank cells.";
+ }
+ }
+ }
+
+ container turing-machine {
+ description
+ "State data and configuration of a Turing Machine.";
+ leaf state {
+ type state-index;
+ config false;
+ mandatory true;
+ description
+ "Current state of the control unit.
+
+ The initial state is 0.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ config false;
+ mandatory true;
+ description
+ "Position of tape read/write head.";
+ }
+
+ container tape {
+ config false;
+ description
+ "The contents of the tape.";
+ uses tape-cells;
+ }
+
+ container transition-function {
+ description
+ "The Turing Machine is configured by specifying the
+ transition function.";
+ list delta {
+ key "label";
+ unique "input/state input/symbol";
+ description
+ "The list of transition rules.";
+ leaf label {
+ type string;
+ description
+ "An arbitrary label of the transition rule.";
+ }
+
+ container input {
+ description
+ "Input parameters (arguments) of the transition rule.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "Current state of the control unit.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ mandatory true;
+ description
+ "Symbol read from the tape cell.";
+ }
+ }
+
+ container output {
+ description
+ "Output values of the transition rule.";
+ leaf state {
+ type state-index;
+ description
+ "New state of the control unit. If this leaf is not
+ present, the state doesn't change.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ description
+ "Symbol to be written to the tape cell. If this leaf is
+ not present, the symbol doesn't change.";
+ }
+
+ leaf head-move {
+ type head-dir;
+ description
+ "Move the head one cell to the left or right";
+ }
+ }
+ }
+ }
+ }
+
+ rpc initialize {
+ description
+ "Initialize the Turing Machine as follows:
+
+ 1. Put the control unit into the initial state (0).
+
+ 2. Move the read/write head to the tape cell with coordinate
+ zero.
+
+ 3. Write the string from the 'tape-content' input parameter to
+ the tape, character by character, starting at cell 0. The
+ tape is othewise empty.";
+ input {
+ leaf tape-content {
+ type string;
+ default "";
+ description
+ "The string with which the tape shall be initialized. The
+ leftmost symbol will be at tape coordinate 0.";
+ }
+ }
+ }
+
+ rpc run {
+ description
+ "Start the Turing Machine operation.";
+ }
+
+ rpc run-until {
+ description
+ "Start the Turing Machine operation and let it run until it is halted
+ or ALL the defined breakpoint conditions are satisfied.";
+ input {
+ leaf state {
+ type state-index;
+ description
+ "What state the control unit has to be at for the execution to be paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ description
+ "Position of tape read/write head for which the breakpoint applies.";
+ }
+
+ container tape {
+ description
+ "What content the tape has to have for the breakpoint to apply.";
+ uses tape-cells;
+ }
+ }
+
+ output {
+ leaf step-count {
+ type uint64;
+ description
+ "The number of steps executed since the last 'run-until' call.";
+ }
+
+ leaf halted {
+ type boolean;
+ description
+ "'True' if the Turing machine is halted, 'false' if it is only paused.";
+ }
+ }
+ }
+
+ notification halted {
+ description
+ "The Turing Machine has halted. This means that there is no
+ transition rule for the current state and tape symbol.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "The state of the control unit in which the machine has
+ halted.";
+ }
+ }
+
+ notification paused {
+ description
+ "The Turing machine has reached a breakpoint and was paused.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "State of the control unit in which the machine was paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ mandatory true;
+ description
+ "Position of tape read/write head when the machine was paused.";
+ }
+
+ container tape {
+ description
+ "Content of the tape when the machine was paused.";
+ uses tape-cells;
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yin
new file mode 100644
index 00000000..7654999c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/afr-machine@2013-12-27.yin
@@ -0,0 +1,281 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="turing-machine"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:tm="http://example.net/turing-machine"&gt;
+ &lt;namespace uri="http://example.net/turing-machine"/&gt;
+ &lt;prefix value="tm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data model for the Turing Machine.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2013-12-27"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="tape-symbol"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="0..1"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type of symbols appearing in tape cells.
+
+A blank is represented as an empty string where necessary.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="cell-index"&gt;
+ &lt;type name="int64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type for indexing tape cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="state-index"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type for indexing states of the control unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="head-dir"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="left"/&gt;
+ &lt;enum name="right"/&gt;
+ &lt;/type&gt;
+ &lt;default value="right"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Possible directions for moving the read/write head, one cell
+to the left or right (default).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="tape-cells"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The tape of the Turing Machine is represented as a sparse
+array.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="cell"&gt;
+ &lt;key value="coord"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of non-blank cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="coord"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Coordinate (index) of the tape cell.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"&gt;
+ &lt;length value="1"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol appearing in the tape cell.
+
+Blank (empty string) is not allowed here because the
+'cell' list only contains non-blank cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/grouping&gt;
+ &lt;container name="turing-machine"&gt;
+ &lt;description&gt;
+ &lt;text&gt;State data and configuration of a Turing Machine.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Current state of the control unit.
+
+The initial state is 0.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The contents of the tape.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;container name="transition-function"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing Machine is configured by specifying the
+transition function.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="delta"&gt;
+ &lt;key value="label"/&gt;
+ &lt;unique tag="input/state input/symbol"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of transition rules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="label"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary label of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="input"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Input parameters (arguments) of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Current state of the control unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol read from the tape cell.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;container name="output"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Output values of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;New state of the control unit. If this leaf is not
+present, the state doesn't change.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol to be written to the tape cell. If this leaf is
+not present, the symbol doesn't change.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-move"&gt;
+ &lt;type name="head-dir"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Move the head one cell to the left or right&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;rpc name="initialize"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initialize the Turing Machine as follows:
+
+1. Put the control unit into the initial state (0).
+
+2. Move the read/write head to the tape cell with coordinate
+ zero.
+
+3. Write the string from the 'tape-content' input parameter to
+ the tape, character by character, starting at cell 0. The
+ tape is othewise empty.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="tape-content"&gt;
+ &lt;type name="string"/&gt;
+ &lt;default value=""/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The string with which the tape shall be initialized. The
+leftmost symbol will be at tape coordinate 0.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="run"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Start the Turing Machine operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="run-until"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Start the Turing Machine operation and let it run until it is halted
+or ALL the defined breakpoint conditions are satisfied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;What state the control unit has to be at for the execution to be paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head for which the breakpoint applies.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;description&gt;
+ &lt;text&gt;What content the tape has to have for the breakpoint to apply.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;leaf name="step-count"&gt;
+ &lt;type name="uint64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of steps executed since the last 'run-until' call.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="halted"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;'True' if the Turing machine is halted, 'false' if it is only paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/output&gt;
+ &lt;/rpc&gt;
+ &lt;notification name="halted"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing Machine has halted. This means that there is no
+transition rule for the current state and tape symbol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The state of the control unit in which the machine has
+halted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+ &lt;notification name="paused"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing machine has reached a breakpoint and was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;State of the control unit in which the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head when the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Content of the tape when the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.groovy
new file mode 100644
index 00000000..5f0348c8
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "close session!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/close-session/NA/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.groovy
new file mode 100644
index 00000000..1dfa9654
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "commit!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>"; \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/commit/NA/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.groovy
new file mode 100644
index 00000000..58135dd5
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "discard changes!"
+return "ignore"; \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/discard-changes/NA/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config-schema.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config-schema.yang
new file mode 100644
index 00000000..fbcc3732
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config-schema.yang
@@ -0,0 +1,40 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="<MID>">
+ <data xmlns="http://example.net/edit-config-method/1.0">
+ rpc edit-config {
+ description
+ "The &lt;edit-config&gt; operation can be used to update the target name and target address.
+ container target {
+ description
+ "Particular configuration to edit.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config target.";
+ }
+
+ leaf running {
+ if-feature "writable-running";
+ type empty;
+ description
+ "The running configuration is the config source.";
+ }
+ }
+ }
+ container config {
+ leaf target-name {
+ type string;
+ description "name of the target";
+ }
+ leaf target-address {
+ type string;
+ description "address of the target";
+ }
+ }
+ }
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.groovy
new file mode 100644
index 00000000..74410214
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.groovy
@@ -0,0 +1,83 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+import com.ericsson.testvnf.server.models.RpcData;
+import java.util.concurrent.TimeUnit;
+import groovy.sql.Sql
+import groovy.util.XmlParser
+import java.util.logging.Logger;
+Logger logger = Logger.getLogger("")
+println "edit config - candidate!"
+def RpcData data = binding.getVariable("RpcData")
+result = "ignore"
+try{
+ def operationsData = new XmlParser().parseText(data.getOperationTagContent())
+ println "operations data::::" + operationsData
+
+ def targetName
+ def targetAddress
+
+ if (!operationsData.config.'target-name'.isEmpty()){
+ targetName = operationsData.config.'target-name'.text()
+ println "target-name ::::" + operationsData.config.'target-name'.text()
+ } else{
+ logger.info("targetName not found");
+ println("targetName not found")
+ }
+ if (!operationsData.config.'target-address'.isEmpty()){
+ targetAddress = operationsData.config.'target-address'.text()
+ println "target-address ::::" + operationsData.config.'target-address'.text()
+ } else{
+ logger.info("targetAddress not found");
+ println ("targetAddress not found");
+ }
+
+ def db = [url: "jdbc:mariadb://localhost:3306/netconf_db?useSSL=false",
+ user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+// def db = [url: "jdbc:mariadb://mariadb:3306/netconf_db?useSSL=false",
+// user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
+ println "DB connection ready"
+ logger.info("DB connection ready")
+ if (targetName != null && targetAddress != null){
+ def metadata = sql.connection.getMetaData()
+ def tables = metadata.getTables(null, null, "AddressTable", null)
+ if (!tables.next()) {
+ logger.info("table not found");
+ println "table not found"
+ sql.execute("CREATE TABLE AddressTable (Name varchar(255), HTTPAddress varchar(255), PRIMARY KEY (Name))")
+ }
+ def query = "INSERT INTO AddressTable (NAME, HTTPAddress) VALUES(\""+targetName+"\",\""+targetAddress+"\") ON DUPLICATE KEY UPDATE Name=\""+targetName+"\", HTTPAddress=\""+targetAddress+"\""
+ println "query" + query
+ logger.info(query)
+ sql.execute(query)
+ result = "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>"
+ }else{
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">edit-conf failed. Target name or address not found in request.</error-message></rpc-error></rpc-reply>"
+ }
+}
+catch (Exception e)
+{
+ e.printStackTrace();
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">edit-conf failed</error-message></rpc-error></rpc-reply>"
+}
+
+
+return result;
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/candidate/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.groovy
new file mode 100644
index 00000000..ae8d3dbe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.groovy
@@ -0,0 +1,84 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+import com.ericsson.testvnf.server.models.RpcData;
+import java.util.concurrent.TimeUnit;
+import groovy.sql.Sql
+import groovy.util.XmlParser
+import java.util.logging.Logger;
+Logger logger = Logger.getLogger("")
+println "edit config - running!"
+def RpcData data = binding.getVariable("RpcData")
+result = "ignore"
+try{
+ def operationsData = new XmlParser().parseText(data.getOperationTagContent())
+ println "operations data::::" + operationsData
+
+ def targetName
+ def targetAddress
+
+ if (!operationsData.config.'target-name'.isEmpty()){
+ targetName = operationsData.config.'target-name'.text()
+ println "target-name ::::" + operationsData.config.'target-name'.text()
+ } else{
+ logger.info("targetName not found");
+ println("targetName not found")
+ }
+ if (!operationsData.config.'target-address'.isEmpty()){
+ targetAddress = operationsData.config.'target-address'.text()
+ println "target-address ::::" + operationsData.config.'target-address'.text()
+ } else{
+ logger.info("targetAddress not found");
+ println ("targetAddress not found");
+ }
+
+ def db = [url: "jdbc:mariadb://localhost:3306/netconf_db?useSSL=false",
+ user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+// def db = [url: "jdbc:mariadb://mariadb:3306/netconf_db?useSSL=false",
+// user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
+ println "DB connection ready"
+ logger.info("DB connection ready")
+ if (targetName != null && targetAddress != null){
+ def metadata = sql.connection.getMetaData()
+ def tables = metadata.getTables(null, null, "AddressTable", null)
+ if (!tables.next()) {
+ logger.info("table not found");
+ println "table not found"
+ sql.execute("CREATE TABLE AddressTable (Name varchar(255), HTTPAddress varchar(255), PRIMARY KEY (Name))")
+ }
+ def query = "INSERT INTO AddressTable (NAME, HTTPAddress) VALUES(\""+targetName+"\",\""+targetAddress+"\") ON DUPLICATE KEY UPDATE Name=\""+targetName+"\", HTTPAddress=\""+targetAddress+"\""
+ println "query" + query
+ logger.info(query)
+ sql.execute(query)
+ result = "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>"
+ }else{
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">edit-conf failed. Target name or address not found in request.</error-message></rpc-error></rpc-reply>"
+ }
+
+}
+catch (Exception e)
+{
+ e.printStackTrace();
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">edit-conf failed</error-message></rpc-error></rpc-reply>"
+}
+
+
+return result;
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/edit-config/running/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response-bak.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response-bak.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response-bak.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.groovy
new file mode 100644
index 00000000..cecf177c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "Get-config!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <data><turing-machine xmlns=\"http://example.net/turing-machine\"><transition-function><delta><label>separator</label><output><state>3</state><symbol>0</symbol></output><input><state>0</state><symbol>0</symbol></input></delta></transition-function></turing-machine></data> </rpc-reply>";
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.xml.bak2 b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.xml.bak2
new file mode 100644
index 00000000..ea0ba28e
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/response.xml.bak2
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>3</state>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/turing-machine/response.xml
new file mode 100644
index 00000000..1c6e4d12
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/get-config/running/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/hello.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/hello.xml
new file mode 100644
index 00000000..619bc92e
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/hello.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <capabilities>
+ <capability>urn:ietf:params:netconf:base:1.0</capability>
+ <capability>urn:ietf:params:netconf:base:1.1</capability>
+ <capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:candidate:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:validate:1.1</capability>
+ <capability>urn:ietf:params:netconf:capability:startup:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:xpath:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&amp;also-supported=report-all,report-all-tagged,trim,explicit</capability>
+ <capability>urn:ietf:params:netconf:capability:notification:1.0</capability>
+ <capability>urn:ietf:params:netconf:capability:interleave:1.0</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-yang-metadata?module=ietf-yang-metadata&amp;revision=2016-08-05</capability>
+ <capability>urn:ietf:params:xml:ns:yang:1?module=yang&amp;revision=2017-02-20</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&amp;revision=2013-07-15</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&amp;revision=2013-07-15</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-datastores?module=ietf-datastores&amp;revision=2017-08-17</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&amp;revision=2017-08-17&amp;module-set-id=25</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&amp;revision=2012-02-22</capability>
+ <capability>urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&amp;revision=2011-06-01&amp;features=writable-running,candidate,rollback-on-error,validate,startup,xpath</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&amp;revision=2012-02-06</capability>
+ <capability>urn:ietf:params:xml:ns:netconf:notification:1.0?module=notifications&amp;revision=2008-07-14</capability>
+ <capability>urn:ietf:params:xml:ns:netmod:notification?module=nc-notifications&amp;revision=2008-07-14</capability>
+ <capability>http://example.net/turing-machine?module=turing-machine&amp;revision=2013-12-27</capability>
+ <capability>urn:opendaylight:params:xml:ns:yang:oripWnc?module=RCAPoCModel&amp;revision=2017-04-27</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&amp;revision=2014-05-08</capability>
+ <capability>urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&amp;revision=2014-05-08</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-ip?module=ietf-ip&amp;revision=2014-06-16</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name?module=ietf-x509-cert-to-name&amp;revision=2014-12-10</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-keystore?module=ietf-keystore&amp;revision=2016-10-31</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-ssh-server?module=ietf-ssh-server&amp;revision=2016-11-02</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-tls-server?module=ietf-tls-server&amp;revision=2016-11-02</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-server?module=ietf-netconf-server&amp;revision=2016-11-02&amp;features=listen,ssh-listen,tls-listen,call-home,ssh-call-home,tls-call-home</capability>
+ <capability>urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&amp;revision=2014-08-06</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-system?module=ietf-system&amp;revision=2014-08-06&amp;features=authentication,local-users</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&amp;revision=2010-10-04</capability>
+ <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&amp;revision=2011-06-01</capability>
+ <capability>urn:ietf:params:xml:ns:netconf:capability:send-event:1.0</capability>
+ <capability>urn:ietf:params:xml:ns:netconf:capability:send-models:1.0</capability>
+ </capabilities>
+ <session-id>1</session-id>
+</hello>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yang
new file mode 100644
index 00000000..9974bc50
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yang
@@ -0,0 +1,122 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module iana-crypt-hash {
+ namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash";
+ prefix ianach;
+
+ organization
+ "IANA";
+ contact
+ " Internet Assigned Numbers Authority
+
+ Postal: ICANN
+ 12025 Waterfront Drive, Suite 300
+ Los Angeles, CA 90094-2536
+ United States
+
+ Tel: +1 310 301 5800
+ E-Mail: iana@iana.org&gt;";
+ description
+ "This YANG module defines a type for storing passwords
+ using a hash function and features to indicate which hash
+ functions are supported by an implementation.
+
+ The latest revision of this YANG module can be obtained from
+ the IANA web site.
+
+ Requests for new values should be made to IANA via
+ email (iana@iana.org).
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ The initial version of this YANG module is part of RFC 7317;
+ see the RFC itself for full legal notices.";
+
+ revision 2014-08-06 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7317: A YANG Data Model for System Management";
+ }
+
+ feature crypt-hash-md5 {
+ description
+ "Indicates that the device supports the MD5
+ hash function in 'crypt-hash' values.";
+ reference
+ "RFC 1321: The MD5 Message-Digest Algorithm";
+ }
+
+ feature crypt-hash-sha-256 {
+ description
+ "Indicates that the device supports the SHA-256
+ hash function in 'crypt-hash' values.";
+ reference
+ "FIPS.180-4.2012: Secure Hash Standard (SHS)";
+ }
+
+ feature crypt-hash-sha-512 {
+ description
+ "Indicates that the device supports the SHA-512
+ hash function in 'crypt-hash' values.";
+ reference
+ "FIPS.180-4.2012: Secure Hash Standard (SHS)";
+ }
+
+ typedef crypt-hash {
+ type string {
+ pattern "$0$.*|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}|$5$(rounds=\\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}|$6$(rounds=\\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}";
+ }
+ description
+ "The crypt-hash type is used to store passwords using
+ a hash function. The algorithms for applying the hash
+ function and encoding the result are implemented in
+ various UNIX systems as the function crypt(3).
+
+ A value of this type matches one of the forms:
+
+ $0$&lt;clear text password&gt;
+ $&lt;id&gt;$&lt;salt&gt;$&lt;password hash&gt;
+ $&lt;id&gt;$&lt;parameter&gt;$&lt;salt&gt;$&lt;password hash&gt;
+
+ The '$0$' prefix signals that the value is clear text. When
+ such a value is received by the server, a hash value is
+ calculated, and the string '$&lt;id&gt;$&lt;salt&gt;$' or
+ $&lt;id&gt;$&lt;parameter&gt;$&lt;salt&gt;$ is prepended to the result. This
+ value is stored in the configuration data store.
+ If a value starting with '$&lt;id&gt;$', where &lt;id&gt; is not '0', is
+ received, the server knows that the value already represents a
+ hashed value and stores it 'as is' in the data store.
+
+ When a server needs to verify a password given by a user, it
+ finds the stored password hash string for that user, extracts
+ the salt, and calculates the hash with the salt and given
+ password as input. If the calculated hash value is the same
+ as the stored value, the password given by the client is
+ accepted.
+
+ This type defines the following hash functions:
+
+ id | hash function | feature
+ ---+---------------+-------------------
+ 1 | MD5 | crypt-hash-md5
+ 5 | SHA-256 | crypt-hash-sha-256
+ 6 | SHA-512 | crypt-hash-sha-512
+
+ The server indicates support for the different hash functions
+ by advertising the corresponding feature.";
+ reference
+ "IEEE Std 1003.1-2008 - crypt() function
+ RFC 1321: The MD5 Message-Digest Algorithm
+ FIPS.180-4.2012: Secure Hash Standard (SHS)";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yin
new file mode 100644
index 00000000..d37aac18
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-crypt-hash@2014-08-06.yin
@@ -0,0 +1,132 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="iana-crypt-hash"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ianach="urn:ietf:params:xml:ns:yang:iana-crypt-hash"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:iana-crypt-hash"/&gt;
+ &lt;prefix value="ianach"/&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IANA&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt; Internet Assigned Numbers Authority
+
+Postal: ICANN
+ 12025 Waterfront Drive, Suite 300
+ Los Angeles, CA 90094-2536
+ United States
+
+Tel: +1 310 301 5800
+E-Mail: iana@iana.org&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This YANG module defines a type for storing passwords
+using a hash function and features to indicate which hash
+functions are supported by an implementation.
+
+The latest revision of this YANG module can be obtained from
+the IANA web site.
+
+Requests for new values should be made to IANA via
+email (iana@iana.org).
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+The initial version of this YANG module is part of RFC 7317;
+see the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2014-08-06"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7317: A YANG Data Model for System Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="crypt-hash-md5"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports the MD5
+hash function in 'crypt-hash' values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1321: The MD5 Message-Digest Algorithm&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="crypt-hash-sha-256"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports the SHA-256
+hash function in 'crypt-hash' values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;FIPS.180-4.2012: Secure Hash Standard (SHS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="crypt-hash-sha-512"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports the SHA-512
+hash function in 'crypt-hash' values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;FIPS.180-4.2012: Secure Hash Standard (SHS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;typedef name="crypt-hash"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="$0$.*|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}|$5$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}|$6$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The crypt-hash type is used to store passwords using
+a hash function. The algorithms for applying the hash
+function and encoding the result are implemented in
+various UNIX systems as the function crypt(3).
+
+A value of this type matches one of the forms:
+
+ $0$&amp;lt;clear text password&amp;gt;
+ $&amp;lt;id&amp;gt;$&amp;lt;salt&amp;gt;$&amp;lt;password hash&amp;gt;
+ $&amp;lt;id&amp;gt;$&amp;lt;parameter&amp;gt;$&amp;lt;salt&amp;gt;$&amp;lt;password hash&amp;gt;
+
+The '$0$' prefix signals that the value is clear text. When
+such a value is received by the server, a hash value is
+calculated, and the string '$&amp;lt;id&amp;gt;$&amp;lt;salt&amp;gt;$' or
+$&amp;lt;id&amp;gt;$&amp;lt;parameter&amp;gt;$&amp;lt;salt&amp;gt;$ is prepended to the result. This
+value is stored in the configuration data store.
+If a value starting with '$&amp;lt;id&amp;gt;$', where &amp;lt;id&amp;gt; is not '0', is
+received, the server knows that the value already represents a
+hashed value and stores it 'as is' in the data store.
+
+When a server needs to verify a password given by a user, it
+finds the stored password hash string for that user, extracts
+the salt, and calculates the hash with the salt and given
+password as input. If the calculated hash value is the same
+as the stored value, the password given by the client is
+accepted.
+
+This type defines the following hash functions:
+
+ id | hash function | feature
+ ---+---------------+-------------------
+ 1 | MD5 | crypt-hash-md5
+ 5 | SHA-256 | crypt-hash-sha-256
+ 6 | SHA-512 | crypt-hash-sha-512
+
+The server indicates support for the different hash functions
+by advertising the corresponding feature.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - crypt() function
+RFC 1321: The MD5 Message-Digest Algorithm
+FIPS.180-4.2012: Secure Hash Standard (SHS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yang
new file mode 100644
index 00000000..9165ae9a
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yang
@@ -0,0 +1,1783 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module iana-if-type {
+ yang-version 1;
+ namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
+ prefix ianaift;
+
+ import ietf-interfaces {
+ prefix if;
+ }
+
+ organization
+ "IANA";
+ contact
+ " Internet Assigned Numbers Authority
+
+ Postal: ICANN
+ 4676 Admiralty Way, Suite 330
+ Marina del Rey, CA 90292
+
+ Tel: +1 310 823 9358
+ &lt;mailto:iana@iana.org&gt;";
+ description
+ "This YANG module defines YANG identities for IANA-registered
+ interface types.
+
+ This YANG module is maintained by IANA and reflects the
+ 'ifType definitions' registry.
+
+ The latest revision of this YANG module can be obtained from
+ the IANA web site.
+
+ Requests for new values should be made to IANA via
+ email (iana@iana.org).
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ The initial version of this YANG module is part of RFC 7224;
+ see the RFC itself for full legal notices.";
+ reference
+ "IANA 'ifType definitions' registry.
+ &lt;http://www.iana.org/assignments/smi-numbers&gt;";
+
+ revision 2014-05-08 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7224: IANA Interface Type YANG Module";
+ }
+
+ identity iana-interface-type {
+ base if:interface-type;
+ description
+ "This identity is used as a base for all interface types
+ defined in the 'ifType definitions' registry.";
+ }
+
+ identity other {
+ base iana-interface-type;
+ }
+
+ identity regular1822 {
+ base iana-interface-type;
+ }
+
+ identity hdh1822 {
+ base iana-interface-type;
+ }
+
+ identity ddnX25 {
+ base iana-interface-type;
+ }
+
+ identity rfc877x25 {
+ base iana-interface-type;
+ reference
+ "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
+ }
+
+ identity ethernetCsmacd {
+ base iana-interface-type;
+ description
+ "For all Ethernet-like interfaces, regardless of speed,
+ as per RFC 3635.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity iso88023Csmacd {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Deprecated via RFC 3635.
+ Use ethernetCsmacd(6) instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity iso88024TokenBus {
+ base iana-interface-type;
+ }
+
+ identity iso88025TokenRing {
+ base iana-interface-type;
+ }
+
+ identity iso88026Man {
+ base iana-interface-type;
+ }
+
+ identity starLan {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Deprecated via RFC 3635.
+ Use ethernetCsmacd(6) instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity proteon10Mbit {
+ base iana-interface-type;
+ }
+
+ identity proteon80Mbit {
+ base iana-interface-type;
+ }
+
+ identity hyperchannel {
+ base iana-interface-type;
+ }
+
+ identity fddi {
+ base iana-interface-type;
+ reference
+ "RFC 1512 - FDDI Management Information Base";
+ }
+
+ identity lapb {
+ base iana-interface-type;
+ reference
+ "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
+ }
+
+ identity sdlc {
+ base iana-interface-type;
+ }
+
+ identity ds1 {
+ base iana-interface-type;
+ description
+ "DS1-MIB.";
+ reference
+ "RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types";
+ }
+
+ identity e1 {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; see DS1-MIB.";
+ reference
+ "RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types";
+ }
+
+ identity basicISDN {
+ base iana-interface-type;
+ description
+ "No longer used. See also RFC 2127.";
+ }
+
+ identity primaryISDN {
+ base iana-interface-type;
+ description
+ "No longer used. See also RFC 2127.";
+ }
+
+ identity propPointToPointSerial {
+ base iana-interface-type;
+ description
+ "Proprietary serial.";
+ }
+
+ identity ppp {
+ base iana-interface-type;
+ }
+
+ identity softwareLoopback {
+ base iana-interface-type;
+ }
+
+ identity eon {
+ base iana-interface-type;
+ description
+ "CLNP over IP.";
+ }
+
+ identity ethernet3Mbit {
+ base iana-interface-type;
+ }
+
+ identity nsip {
+ base iana-interface-type;
+ description
+ "XNS over IP.";
+ }
+
+ identity slip {
+ base iana-interface-type;
+ description
+ "Generic SLIP.";
+ }
+
+ identity ultra {
+ base iana-interface-type;
+ description
+ "Ultra Technologies.";
+ }
+
+ identity ds3 {
+ base iana-interface-type;
+ description
+ "DS3-MIB.";
+ reference
+ "RFC 3896 - Definitions of Managed Objects for the
+ DS3/E3 Interface Type";
+ }
+
+ identity sip {
+ base iana-interface-type;
+ description
+ "SMDS, coffee.";
+ reference
+ "RFC 1694 - Definitions of Managed Objects for SMDS
+ Interfaces using SMIv2";
+ }
+
+ identity frameRelay {
+ base iana-interface-type;
+ description
+ "DTE only.";
+ reference
+ "RFC 2115 - Management Information Base for Frame Relay
+ DTEs Using SMIv2";
+ }
+
+ identity rs232 {
+ base iana-interface-type;
+ reference
+ "RFC 1659 - Definitions of Managed Objects for RS-232-like
+ Hardware Devices using SMIv2";
+ }
+
+ identity para {
+ base iana-interface-type;
+ description
+ "Parallel-port.";
+ reference
+ "RFC 1660 - Definitions of Managed Objects for
+ Parallel-printer-like Hardware Devices using
+ SMIv2";
+ }
+
+ identity arcnet {
+ base iana-interface-type;
+ description
+ "ARCnet.";
+ }
+
+ identity arcnetPlus {
+ base iana-interface-type;
+ description
+ "ARCnet Plus.";
+ }
+
+ identity atm {
+ base iana-interface-type;
+ description
+ "ATM cells.";
+ }
+
+ identity miox25 {
+ base iana-interface-type;
+ reference
+ "RFC 1461 - SNMP MIB extension for Multiprotocol
+ Interconnect over X.25";
+ }
+
+ identity sonet {
+ base iana-interface-type;
+ description
+ "SONET or SDH.";
+ }
+
+ identity x25ple {
+ base iana-interface-type;
+ reference
+ "RFC 2127 - ISDN Management Information Base using SMIv2";
+ }
+
+ identity iso88022llc {
+ base iana-interface-type;
+ }
+
+ identity localTalk {
+ base iana-interface-type;
+ }
+
+ identity smdsDxi {
+ base iana-interface-type;
+ }
+
+ identity frameRelayService {
+ base iana-interface-type;
+ description
+ "FRNETSERV-MIB.";
+ reference
+ "RFC 2954 - Definitions of Managed Objects for Frame
+ Relay Service";
+ }
+
+ identity v35 {
+ base iana-interface-type;
+ }
+
+ identity hssi {
+ base iana-interface-type;
+ }
+
+ identity hippi {
+ base iana-interface-type;
+ }
+
+ identity modem {
+ base iana-interface-type;
+ description
+ "Generic modem.";
+ }
+
+ identity aal5 {
+ base iana-interface-type;
+ description
+ "AAL5 over ATM.";
+ }
+
+ identity sonetPath {
+ base iana-interface-type;
+ }
+
+ identity sonetVT {
+ base iana-interface-type;
+ }
+
+ identity smdsIcip {
+ base iana-interface-type;
+ description
+ "SMDS InterCarrier Interface.";
+ }
+
+ identity propVirtual {
+ base iana-interface-type;
+ description
+ "Proprietary virtual/internal.";
+ reference
+ "RFC 2863 - The Interfaces Group MIB";
+ }
+
+ identity propMultiplexor {
+ base iana-interface-type;
+ description
+ "Proprietary multiplexing.";
+ reference
+ "RFC 2863 - The Interfaces Group MIB";
+ }
+
+ identity ieee80212 {
+ base iana-interface-type;
+ description
+ "100BaseVG.";
+ }
+
+ identity fibreChannel {
+ base iana-interface-type;
+ description
+ "Fibre Channel.";
+ }
+
+ identity hippiInterface {
+ base iana-interface-type;
+ description
+ "HIPPI interfaces.";
+ }
+
+ identity frameRelayInterconnect {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; use either
+ frameRelay(32) or frameRelayService(44).";
+ }
+
+ identity aflane8023 {
+ base iana-interface-type;
+ description
+ "ATM Emulated LAN for 802.3.";
+ }
+
+ identity aflane8025 {
+ base iana-interface-type;
+ description
+ "ATM Emulated LAN for 802.5.";
+ }
+
+ identity cctEmul {
+ base iana-interface-type;
+ description
+ "ATM Emulated circuit.";
+ }
+
+ identity fastEther {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity isdn {
+ base iana-interface-type;
+ description
+ "ISDN and X.25.";
+ reference
+ "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
+ in the Packet Mode";
+ }
+
+ identity v11 {
+ base iana-interface-type;
+ description
+ "CCITT V.11/X.21.";
+ }
+
+ identity v36 {
+ base iana-interface-type;
+ description
+ "CCITT V.36.";
+ }
+
+ identity g703at64k {
+ base iana-interface-type;
+ description
+ "CCITT G703 at 64Kbps.";
+ }
+
+ identity g703at2mb {
+ base iana-interface-type;
+ status obsolete;
+ description
+ "Obsolete; see DS1-MIB.";
+ }
+
+ identity qllc {
+ base iana-interface-type;
+ description
+ "SNA QLLC.";
+ }
+
+ identity fastEtherFX {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity channel {
+ base iana-interface-type;
+ description
+ "Channel.";
+ }
+
+ identity ieee80211 {
+ base iana-interface-type;
+ description
+ "Radio spread spectrum.";
+ }
+
+ identity ibm370parChan {
+ base iana-interface-type;
+ description
+ "IBM System 360/370 OEMI Channel.";
+ }
+
+ identity escon {
+ base iana-interface-type;
+ description
+ "IBM Enterprise Systems Connection.";
+ }
+
+ identity dlsw {
+ base iana-interface-type;
+ description
+ "Data Link Switching.";
+ }
+
+ identity isdns {
+ base iana-interface-type;
+ description
+ "ISDN S/T interface.";
+ }
+
+ identity isdnu {
+ base iana-interface-type;
+ description
+ "ISDN U interface.";
+ }
+
+ identity lapd {
+ base iana-interface-type;
+ description
+ "Link Access Protocol D.";
+ }
+
+ identity ipSwitch {
+ base iana-interface-type;
+ description
+ "IP Switching Objects.";
+ }
+
+ identity rsrb {
+ base iana-interface-type;
+ description
+ "Remote Source Route Bridging.";
+ }
+
+ identity atmLogical {
+ base iana-interface-type;
+ description
+ "ATM Logical Port.";
+ reference
+ "RFC 3606 - Definitions of Supplemental Managed Objects
+ for ATM Interface";
+ }
+
+ identity ds0 {
+ base iana-interface-type;
+ description
+ "Digital Signal Level 0.";
+ reference
+ "RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type";
+ }
+
+ identity ds0Bundle {
+ base iana-interface-type;
+ description
+ "Group of ds0s on the same ds1.";
+ reference
+ "RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type";
+ }
+
+ identity bsc {
+ base iana-interface-type;
+ description
+ "Bisynchronous Protocol.";
+ }
+
+ identity async {
+ base iana-interface-type;
+ description
+ "Asynchronous Protocol.";
+ }
+
+ identity cnr {
+ base iana-interface-type;
+ description
+ "Combat Net Radio.";
+ }
+
+ identity iso88025Dtr {
+ base iana-interface-type;
+ description
+ "ISO 802.5r DTR.";
+ }
+
+ identity eplrs {
+ base iana-interface-type;
+ description
+ "Ext Pos Loc Report Sys.";
+ }
+
+ identity arap {
+ base iana-interface-type;
+ description
+ "Appletalk Remote Access Protocol.";
+ }
+
+ identity propCnls {
+ base iana-interface-type;
+ description
+ "Proprietary Connectionless Protocol.";
+ }
+
+ identity hostPad {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X.29 PAD Protocol.";
+ }
+
+ identity termPad {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X.3 PAD Facility.";
+ }
+
+ identity frameRelayMPI {
+ base iana-interface-type;
+ description
+ "Multiproto Interconnect over FR.";
+ }
+
+ identity x213 {
+ base iana-interface-type;
+ description
+ "CCITT-ITU X213.";
+ }
+
+ identity adsl {
+ base iana-interface-type;
+ description
+ "Asymmetric Digital Subscriber Loop.";
+ }
+
+ identity radsl {
+ base iana-interface-type;
+ description
+ "Rate-Adapt. Digital Subscriber Loop.";
+ }
+
+ identity sdsl {
+ base iana-interface-type;
+ description
+ "Symmetric Digital Subscriber Loop.";
+ }
+
+ identity vdsl {
+ base iana-interface-type;
+ description
+ "Very H-Speed Digital Subscrib. Loop.";
+ }
+
+ identity iso88025CRFPInt {
+ base iana-interface-type;
+ description
+ "ISO 802.5 CRFP.";
+ }
+
+ identity myrinet {
+ base iana-interface-type;
+ description
+ "Myricom Myrinet.";
+ }
+
+ identity voiceEM {
+ base iana-interface-type;
+ description
+ "Voice recEive and transMit.";
+ }
+
+ identity voiceFXO {
+ base iana-interface-type;
+ description
+ "Voice Foreign Exchange Office.";
+ }
+
+ identity voiceFXS {
+ base iana-interface-type;
+ description
+ "Voice Foreign Exchange Station.";
+ }
+
+ identity voiceEncap {
+ base iana-interface-type;
+ description
+ "Voice encapsulation.";
+ }
+
+ identity voiceOverIp {
+ base iana-interface-type;
+ description
+ "Voice over IP encapsulation.";
+ }
+
+ identity atmDxi {
+ base iana-interface-type;
+ description
+ "ATM DXI.";
+ }
+
+ identity atmFuni {
+ base iana-interface-type;
+ description
+ "ATM FUNI.";
+ }
+
+ identity atmIma {
+ base iana-interface-type;
+ description
+ "ATM IMA.";
+ }
+
+ identity pppMultilinkBundle {
+ base iana-interface-type;
+ description
+ "PPP Multilink Bundle.";
+ }
+
+ identity ipOverCdlc {
+ base iana-interface-type;
+ description
+ "IBM ipOverCdlc.";
+ }
+
+ identity ipOverClaw {
+ base iana-interface-type;
+ description
+ "IBM Common Link Access to Workstn.";
+ }
+
+ identity stackToStack {
+ base iana-interface-type;
+ description
+ "IBM stackToStack.";
+ }
+
+ identity virtualIpAddress {
+ base iana-interface-type;
+ description
+ "IBM VIPA.";
+ }
+
+ identity mpc {
+ base iana-interface-type;
+ description
+ "IBM multi-protocol channel support.";
+ }
+
+ identity ipOverAtm {
+ base iana-interface-type;
+ description
+ "IBM ipOverAtm.";
+ reference
+ "RFC 2320 - Definitions of Managed Objects for Classical IP
+ and ARP Over ATM Using SMIv2 (IPOA-MIB)";
+ }
+
+ identity iso88025Fiber {
+ base iana-interface-type;
+ description
+ "ISO 802.5j Fiber Token Ring.";
+ }
+
+ identity tdlc {
+ base iana-interface-type;
+ description
+ "IBM twinaxial data link control.";
+ }
+
+ identity gigabitEthernet {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Obsoleted via RFC 3635.
+ ethernetCsmacd(6) should be used instead.";
+ reference
+ "RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types";
+ }
+
+ identity hdlc {
+ base iana-interface-type;
+ description
+ "HDLC.";
+ }
+
+ identity lapf {
+ base iana-interface-type;
+ description
+ "LAP F.";
+ }
+
+ identity v37 {
+ base iana-interface-type;
+ description
+ "V.37.";
+ }
+
+ identity x25mlp {
+ base iana-interface-type;
+ description
+ "Multi-Link Protocol.";
+ }
+
+ identity x25huntGroup {
+ base iana-interface-type;
+ description
+ "X25 Hunt Group.";
+ }
+
+ identity transpHdlc {
+ base iana-interface-type;
+ description
+ "Transp HDLC.";
+ }
+
+ identity interleave {
+ base iana-interface-type;
+ description
+ "Interleave channel.";
+ }
+
+ identity fast {
+ base iana-interface-type;
+ description
+ "Fast channel.";
+ }
+
+ identity ip {
+ base iana-interface-type;
+ description
+ "IP (for APPN HPR in IP networks).";
+ }
+
+ identity docsCableMaclayer {
+ base iana-interface-type;
+ description
+ "CATV Mac Layer.";
+ }
+
+ identity docsCableDownstream {
+ base iana-interface-type;
+ description
+ "CATV Downstream interface.";
+ }
+
+ identity docsCableUpstream {
+ base iana-interface-type;
+ description
+ "CATV Upstream interface.";
+ }
+
+ identity a12MppSwitch {
+ base iana-interface-type;
+ description
+ "Avalon Parallel Processor.";
+ }
+
+ identity tunnel {
+ base iana-interface-type;
+ description
+ "Encapsulation interface.";
+ }
+
+ identity coffee {
+ base iana-interface-type;
+ description
+ "Coffee pot.";
+ reference
+ "RFC 2325 - Coffee MIB";
+ }
+
+ identity ces {
+ base iana-interface-type;
+ description
+ "Circuit Emulation Service.";
+ }
+
+ identity atmSubInterface {
+ base iana-interface-type;
+ description
+ "ATM Sub Interface.";
+ }
+
+ identity l2vlan {
+ base iana-interface-type;
+ description
+ "Layer 2 Virtual LAN using 802.1Q.";
+ }
+
+ identity l3ipvlan {
+ base iana-interface-type;
+ description
+ "Layer 3 Virtual LAN using IP.";
+ }
+
+ identity l3ipxvlan {
+ base iana-interface-type;
+ description
+ "Layer 3 Virtual LAN using IPX.";
+ }
+
+ identity digitalPowerline {
+ base iana-interface-type;
+ description
+ "IP over Power Lines.";
+ }
+
+ identity mediaMailOverIp {
+ base iana-interface-type;
+ description
+ "Multimedia Mail over IP.";
+ }
+
+ identity dtm {
+ base iana-interface-type;
+ description
+ "Dynamic synchronous Transfer Mode.";
+ }
+
+ identity dcn {
+ base iana-interface-type;
+ description
+ "Data Communications Network.";
+ }
+
+ identity ipForward {
+ base iana-interface-type;
+ description
+ "IP Forwarding Interface.";
+ }
+
+ identity msdsl {
+ base iana-interface-type;
+ description
+ "Multi-rate Symmetric DSL.";
+ }
+
+ identity ieee1394 {
+ base iana-interface-type;
+ description
+ "IEEE1394 High Performance Serial Bus.";
+ }
+
+ identity if-gsn {
+ base iana-interface-type;
+ description
+ "HIPPI-6400.";
+ }
+
+ identity dvbRccMacLayer {
+ base iana-interface-type;
+ description
+ "DVB-RCC MAC Layer.";
+ }
+
+ identity dvbRccDownstream {
+ base iana-interface-type;
+ description
+ "DVB-RCC Downstream Channel.";
+ }
+
+ identity dvbRccUpstream {
+ base iana-interface-type;
+ description
+ "DVB-RCC Upstream Channel.";
+ }
+
+ identity atmVirtual {
+ base iana-interface-type;
+ description
+ "ATM Virtual Interface.";
+ }
+
+ identity mplsTunnel {
+ base iana-interface-type;
+ description
+ "MPLS Tunnel Virtual Interface.";
+ }
+
+ identity srp {
+ base iana-interface-type;
+ description
+ "Spatial Reuse Protocol.";
+ }
+
+ identity voiceOverAtm {
+ base iana-interface-type;
+ description
+ "Voice over ATM.";
+ }
+
+ identity voiceOverFrameRelay {
+ base iana-interface-type;
+ description
+ "Voice Over Frame Relay.";
+ }
+
+ identity idsl {
+ base iana-interface-type;
+ description
+ "Digital Subscriber Loop over ISDN.";
+ }
+
+ identity compositeLink {
+ base iana-interface-type;
+ description
+ "Avici Composite Link Interface.";
+ }
+
+ identity ss7SigLink {
+ base iana-interface-type;
+ description
+ "SS7 Signaling Link.";
+ }
+
+ identity propWirelessP2P {
+ base iana-interface-type;
+ description
+ "Prop. P2P wireless interface.";
+ }
+
+ identity frForward {
+ base iana-interface-type;
+ description
+ "Frame Forward Interface.";
+ }
+
+ identity rfc1483 {
+ base iana-interface-type;
+ description
+ "Multiprotocol over ATM AAL5.";
+ reference
+ "RFC 1483 - Multiprotocol Encapsulation over ATM
+ Adaptation Layer 5";
+ }
+
+ identity usb {
+ base iana-interface-type;
+ description
+ "USB Interface.";
+ }
+
+ identity ieee8023adLag {
+ base iana-interface-type;
+ description
+ "IEEE 802.3ad Link Aggregate.";
+ }
+
+ identity bgppolicyaccounting {
+ base iana-interface-type;
+ description
+ "BGP Policy Accounting.";
+ }
+
+ identity frf16MfrBundle {
+ base iana-interface-type;
+ description
+ "FRF.16 Multilink Frame Relay.";
+ }
+
+ identity h323Gatekeeper {
+ base iana-interface-type;
+ description
+ "H323 Gatekeeper.";
+ }
+
+ identity h323Proxy {
+ base iana-interface-type;
+ description
+ "H323 Voice and Video Proxy.";
+ }
+
+ identity mpls {
+ base iana-interface-type;
+ description
+ "MPLS.";
+ }
+
+ identity mfSigLink {
+ base iana-interface-type;
+ description
+ "Multi-frequency signaling link.";
+ }
+
+ identity hdsl2 {
+ base iana-interface-type;
+ description
+ "High Bit-Rate DSL - 2nd generation.";
+ }
+
+ identity shdsl {
+ base iana-interface-type;
+ description
+ "Multirate HDSL2.";
+ }
+
+ identity ds1FDL {
+ base iana-interface-type;
+ description
+ "Facility Data Link (4Kbps) on a DS1.";
+ }
+
+ identity pos {
+ base iana-interface-type;
+ description
+ "Packet over SONET/SDH Interface.";
+ }
+
+ identity dvbAsiIn {
+ base iana-interface-type;
+ description
+ "DVB-ASI Input.";
+ }
+
+ identity dvbAsiOut {
+ base iana-interface-type;
+ description
+ "DVB-ASI Output.";
+ }
+
+ identity plc {
+ base iana-interface-type;
+ description
+ "Power Line Communications.";
+ }
+
+ identity nfas {
+ base iana-interface-type;
+ description
+ "Non-Facility Associated Signaling.";
+ }
+
+ identity tr008 {
+ base iana-interface-type;
+ description
+ "TR008.";
+ }
+
+ identity gr303RDT {
+ base iana-interface-type;
+ description
+ "Remote Digital Terminal.";
+ }
+
+ identity gr303IDT {
+ base iana-interface-type;
+ description
+ "Integrated Digital Terminal.";
+ }
+
+ identity isup {
+ base iana-interface-type;
+ description
+ "ISUP.";
+ }
+
+ identity propDocsWirelessMaclayer {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Maclayer.";
+ }
+
+ identity propDocsWirelessDownstream {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Downstream.";
+ }
+
+ identity propDocsWirelessUpstream {
+ base iana-interface-type;
+ description
+ "Cisco proprietary Upstream.";
+ }
+
+ identity hiperlan2 {
+ base iana-interface-type;
+ description
+ "HIPERLAN Type 2 Radio Interface.";
+ }
+
+ identity propBWAp2Mp {
+ base iana-interface-type;
+ description
+ "PropBroadbandWirelessAccesspt2Multipt (use of this value
+ for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
+ is deprecated, and ieee80216WMAN(237) should be used
+ instead).";
+ }
+
+ identity sonetOverheadChannel {
+ base iana-interface-type;
+ description
+ "SONET Overhead Channel.";
+ }
+
+ identity digitalWrapperOverheadChannel {
+ base iana-interface-type;
+ description
+ "Digital Wrapper.";
+ }
+
+ identity aal2 {
+ base iana-interface-type;
+ description
+ "ATM adaptation layer 2.";
+ }
+
+ identity radioMAC {
+ base iana-interface-type;
+ description
+ "MAC layer over radio links.";
+ }
+
+ identity atmRadio {
+ base iana-interface-type;
+ description
+ "ATM over radio links.";
+ }
+
+ identity imt {
+ base iana-interface-type;
+ description
+ "Inter-Machine Trunks.";
+ }
+
+ identity mvl {
+ base iana-interface-type;
+ description
+ "Multiple Virtual Lines DSL.";
+ }
+
+ identity reachDSL {
+ base iana-interface-type;
+ description
+ "Long Reach DSL.";
+ }
+
+ identity frDlciEndPt {
+ base iana-interface-type;
+ description
+ "Frame Relay DLCI End Point.";
+ }
+
+ identity atmVciEndPt {
+ base iana-interface-type;
+ description
+ "ATM VCI End Point.";
+ }
+
+ identity opticalChannel {
+ base iana-interface-type;
+ description
+ "Optical Channel.";
+ }
+
+ identity opticalTransport {
+ base iana-interface-type;
+ description
+ "Optical Transport.";
+ }
+
+ identity propAtm {
+ base iana-interface-type;
+ description
+ "Proprietary ATM.";
+ }
+
+ identity voiceOverCable {
+ base iana-interface-type;
+ description
+ "Voice Over Cable Interface.";
+ }
+
+ identity infiniband {
+ base iana-interface-type;
+ description
+ "Infiniband.";
+ }
+
+ identity teLink {
+ base iana-interface-type;
+ description
+ "TE Link.";
+ }
+
+ identity q2931 {
+ base iana-interface-type;
+ description
+ "Q.2931.";
+ }
+
+ identity virtualTg {
+ base iana-interface-type;
+ description
+ "Virtual Trunk Group.";
+ }
+
+ identity sipTg {
+ base iana-interface-type;
+ description
+ "SIP Trunk Group.";
+ }
+
+ identity sipSig {
+ base iana-interface-type;
+ description
+ "SIP Signaling.";
+ }
+
+ identity docsCableUpstreamChannel {
+ base iana-interface-type;
+ description
+ "CATV Upstream Channel.";
+ }
+
+ identity econet {
+ base iana-interface-type;
+ description
+ "Acorn Econet.";
+ }
+
+ identity pon155 {
+ base iana-interface-type;
+ description
+ "FSAN 155Mb Symetrical PON interface.";
+ }
+
+ identity pon622 {
+ base iana-interface-type;
+ description
+ "FSAN 622Mb Symetrical PON interface.";
+ }
+
+ identity bridge {
+ base iana-interface-type;
+ description
+ "Transparent bridge interface.";
+ }
+
+ identity linegroup {
+ base iana-interface-type;
+ description
+ "Interface common to multiple lines.";
+ }
+
+ identity voiceEMFGD {
+ base iana-interface-type;
+ description
+ "Voice E&amp;M Feature Group D.";
+ }
+
+ identity voiceFGDEANA {
+ base iana-interface-type;
+ description
+ "Voice FGD Exchange Access North American.";
+ }
+
+ identity voiceDID {
+ base iana-interface-type;
+ description
+ "Voice Direct Inward Dialing.";
+ }
+
+ identity mpegTransport {
+ base iana-interface-type;
+ description
+ "MPEG transport interface.";
+ }
+
+ identity sixToFour {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "6to4 interface (DEPRECATED).";
+ reference
+ "RFC 4087 - IP Tunnel MIB";
+ }
+
+ identity gtp {
+ base iana-interface-type;
+ description
+ "GTP (GPRS Tunneling Protocol).";
+ }
+
+ identity pdnEtherLoop1 {
+ base iana-interface-type;
+ description
+ "Paradyne EtherLoop 1.";
+ }
+
+ identity pdnEtherLoop2 {
+ base iana-interface-type;
+ description
+ "Paradyne EtherLoop 2.";
+ }
+
+ identity opticalChannelGroup {
+ base iana-interface-type;
+ description
+ "Optical Channel Group.";
+ }
+
+ identity homepna {
+ base iana-interface-type;
+ description
+ "HomePNA ITU-T G.989.";
+ }
+
+ identity gfp {
+ base iana-interface-type;
+ description
+ "Generic Framing Procedure (GFP).";
+ }
+
+ identity ciscoISLvlan {
+ base iana-interface-type;
+ description
+ "Layer 2 Virtual LAN using Cisco ISL.";
+ }
+
+ identity actelisMetaLOOP {
+ base iana-interface-type;
+ description
+ "Acteleis proprietary MetaLOOP High Speed Link.";
+ }
+
+ identity fcipLink {
+ base iana-interface-type;
+ description
+ "FCIP Link.";
+ }
+
+ identity rpr {
+ base iana-interface-type;
+ description
+ "Resilient Packet Ring Interface Type.";
+ }
+
+ identity qam {
+ base iana-interface-type;
+ description
+ "RF Qam Interface.";
+ }
+
+ identity lmp {
+ base iana-interface-type;
+ description
+ "Link Management Protocol.";
+ reference
+ "RFC 4327 - Link Management Protocol (LMP) Management
+ Information Base (MIB)";
+ }
+
+ identity cblVectaStar {
+ base iana-interface-type;
+ description
+ "Cambridge Broadband Networks Limited VectaStar.";
+ }
+
+ identity docsCableMCmtsDownstream {
+ base iana-interface-type;
+ description
+ "CATV Modular CMTS Downstream Interface.";
+ }
+
+ identity adsl2 {
+ base iana-interface-type;
+ status deprecated;
+ description
+ "Asymmetric Digital Subscriber Loop Version 2
+ (DEPRECATED/OBSOLETED - please use adsl2plus(238)
+ instead).";
+ reference
+ "RFC 4706 - Definitions of Managed Objects for Asymmetric
+ Digital Subscriber Line 2 (ADSL2)";
+ }
+
+ identity macSecControlledIF {
+ base iana-interface-type;
+ description
+ "MACSecControlled.";
+ }
+
+ identity macSecUncontrolledIF {
+ base iana-interface-type;
+ description
+ "MACSecUncontrolled.";
+ }
+
+ identity aviciOpticalEther {
+ base iana-interface-type;
+ description
+ "Avici Optical Ethernet Aggregate.";
+ }
+
+ identity atmbond {
+ base iana-interface-type;
+ description
+ "atmbond.";
+ }
+
+ identity voiceFGDOS {
+ base iana-interface-type;
+ description
+ "Voice FGD Operator Services.";
+ }
+
+ identity mocaVersion1 {
+ base iana-interface-type;
+ description
+ "MultiMedia over Coax Alliance (MoCA) Interface
+ as documented in information provided privately to IANA.";
+ }
+
+ identity ieee80216WMAN {
+ base iana-interface-type;
+ description
+ "IEEE 802.16 WMAN interface.";
+ }
+
+ identity adsl2plus {
+ base iana-interface-type;
+ description
+ "Asymmetric Digital Subscriber Loop Version 2 -
+ Version 2 Plus and all variants.";
+ }
+
+ identity dvbRcsMacLayer {
+ base iana-interface-type;
+ description
+ "DVB-RCS MAC Layer.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+
+ identity dvbTdm {
+ base iana-interface-type;
+ description
+ "DVB Satellite TDM.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+
+ identity dvbRcsTdma {
+ base iana-interface-type;
+ description
+ "DVB-RCS TDMA.";
+ reference
+ "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+ }
+
+ identity x86Laps {
+ base iana-interface-type;
+ description
+ "LAPS based on ITU-T X.86/Y.1323.";
+ }
+
+ identity wwanPP {
+ base iana-interface-type;
+ description
+ "3GPP WWAN.";
+ }
+
+ identity wwanPP2 {
+ base iana-interface-type;
+ description
+ "3GPP2 WWAN.";
+ }
+
+ identity voiceEBS {
+ base iana-interface-type;
+ description
+ "Voice P-phone EBS physical interface.";
+ }
+
+ identity ifPwType {
+ base iana-interface-type;
+ description
+ "Pseudowire interface type.";
+ reference
+ "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
+ }
+
+ identity ilan {
+ base iana-interface-type;
+ description
+ "Internal LAN on a bridge per IEEE 802.1ap.";
+ }
+
+ identity pip {
+ base iana-interface-type;
+ description
+ "Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
+ }
+
+ identity aluELP {
+ base iana-interface-type;
+ description
+ "Alcatel-Lucent Ethernet Link Protection.";
+ }
+
+ identity gpon {
+ base iana-interface-type;
+ description
+ "Gigabit-capable passive optical networks (G-PON) as per
+ ITU-T G.948.";
+ }
+
+ identity vdsl2 {
+ base iana-interface-type;
+ description
+ "Very high speed digital subscriber line Version 2
+ (as per ITU-T Recommendation G.993.2).";
+ reference
+ "RFC 5650 - Definitions of Managed Objects for Very High
+ Speed Digital Subscriber Line 2 (VDSL2)";
+ }
+
+ identity capwapDot11Profile {
+ base iana-interface-type;
+ description
+ "WLAN Profile Interface.";
+ reference
+ "RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11";
+ }
+
+ identity capwapDot11Bss {
+ base iana-interface-type;
+ description
+ "WLAN BSS Interface.";
+ reference
+ "RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11";
+ }
+
+ identity capwapWtpVirtualRadio {
+ base iana-interface-type;
+ description
+ "WTP Virtual Radio Interface.";
+ reference
+ "RFC 5833 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Base MIB";
+ }
+
+ identity bits {
+ base iana-interface-type;
+ description
+ "bitsport.";
+ }
+
+ identity docsCableUpstreamRfPort {
+ base iana-interface-type;
+ description
+ "DOCSIS CATV Upstream RF Port.";
+ }
+
+ identity cableDownstreamRfPort {
+ base iana-interface-type;
+ description
+ "CATV downstream RF Port.";
+ }
+
+ identity vmwareVirtualNic {
+ base iana-interface-type;
+ description
+ "VMware Virtual Network Interface.";
+ }
+
+ identity ieee802154 {
+ base iana-interface-type;
+ description
+ "IEEE 802.15.4 WPAN interface.";
+ reference
+ "IEEE 802.15.4-2006";
+ }
+
+ identity otnOdu {
+ base iana-interface-type;
+ description
+ "OTN Optical Data Unit.";
+ }
+
+ identity otnOtu {
+ base iana-interface-type;
+ description
+ "OTN Optical channel Transport Unit.";
+ }
+
+ identity ifVfiType {
+ base iana-interface-type;
+ description
+ "VPLS Forwarding Instance Interface Type.";
+ }
+
+ identity g9981 {
+ base iana-interface-type;
+ description
+ "G.998.1 bonded interface.";
+ }
+
+ identity g9982 {
+ base iana-interface-type;
+ description
+ "G.998.2 bonded interface.";
+ }
+
+ identity g9983 {
+ base iana-interface-type;
+ description
+ "G.998.3 bonded interface.";
+ }
+
+ identity aluEpon {
+ base iana-interface-type;
+ description
+ "Ethernet Passive Optical Networks (E-PON).";
+ }
+
+ identity aluEponOnu {
+ base iana-interface-type;
+ description
+ "EPON Optical Network Unit.";
+ }
+
+ identity aluEponPhysicalUni {
+ base iana-interface-type;
+ description
+ "EPON physical User to Network interface.";
+ }
+
+ identity aluEponLogicalLink {
+ base iana-interface-type;
+ description
+ "The emulation of a point-to-point link over the EPON
+ layer.";
+ }
+
+ identity aluGponOnu {
+ base iana-interface-type;
+ description
+ "GPON Optical Network Unit.";
+ reference
+ "ITU-T G.984.2";
+ }
+
+ identity aluGponPhysicalUni {
+ base iana-interface-type;
+ description
+ "GPON physical User to Network interface.";
+ reference
+ "ITU-T G.984.2";
+ }
+
+ identity vmwareNicTeam {
+ base iana-interface-type;
+ description
+ "VMware NIC Team.";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yin
new file mode 100644
index 00000000..34f7e537
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/iana-if-type@2014-05-08.yin
@@ -0,0 +1,1804 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="iana-if-type"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"
+ xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces"&gt;
+ &lt;yang-version value="1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:iana-if-type"/&gt;
+ &lt;prefix value="ianaift"/&gt;
+ &lt;import module="ietf-interfaces"&gt;
+ &lt;prefix value="if"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IANA&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt; Internet Assigned Numbers Authority
+
+Postal: ICANN
+ 4676 Admiralty Way, Suite 330
+ Marina del Rey, CA 90292
+
+Tel: +1 310 823 9358
+&amp;lt;mailto:iana@iana.org&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This YANG module defines YANG identities for IANA-registered
+interface types.
+
+This YANG module is maintained by IANA and reflects the
+'ifType definitions' registry.
+
+The latest revision of this YANG module can be obtained from
+the IANA web site.
+
+Requests for new values should be made to IANA via
+email (iana@iana.org).
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+The initial version of this YANG module is part of RFC 7224;
+see the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IANA 'ifType definitions' registry.
+&amp;lt;http://www.iana.org/assignments/smi-numbers&amp;gt;&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;revision date="2014-05-08"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7224: IANA Interface Type YANG Module&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;identity name="iana-interface-type"&gt;
+ &lt;base name="if:interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This identity is used as a base for all interface types
+defined in the 'ifType definitions' registry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="other"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="regular1822"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hdh1822"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ddnX25"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rfc877x25"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ethernetCsmacd"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;For all Ethernet-like interfaces, regardless of speed,
+as per RFC 3635.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88023Csmacd"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Deprecated via RFC 3635.
+Use ethernetCsmacd(6) instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88024TokenBus"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88025TokenRing"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88026Man"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="starLan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Deprecated via RFC 3635.
+Use ethernetCsmacd(6) instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="proteon10Mbit"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="proteon80Mbit"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hyperchannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fddi"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1512 - FDDI Management Information Base&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="lapb"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1381 - SNMP MIB Extension for X.25 LAPB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sdlc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ds1"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DS1-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="e1"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="obsolete"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsolete; see DS1-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4805 - Definitions of Managed Objects for the
+ DS1, J1, E1, DS2, and E2 Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="basicISDN"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;No longer used. See also RFC 2127.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="primaryISDN"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;No longer used. See also RFC 2127.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propPointToPointSerial"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Proprietary serial.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ppp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="softwareLoopback"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="eon"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CLNP over IP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ethernet3Mbit"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="nsip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;XNS over IP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="slip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generic SLIP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ultra"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Ultra Technologies.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ds3"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DS3-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3896 - Definitions of Managed Objects for the
+ DS3/E3 Interface Type&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SMDS, coffee.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1694 - Definitions of Managed Objects for SMDS
+ Interfaces using SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frameRelay"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DTE only.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2115 - Management Information Base for Frame Relay
+ DTEs Using SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rs232"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1659 - Definitions of Managed Objects for RS-232-like
+ Hardware Devices using SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="para"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parallel-port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1660 - Definitions of Managed Objects for
+ Parallel-printer-like Hardware Devices using
+ SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="arcnet"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ARCnet.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="arcnetPlus"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ARCnet Plus.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="miox25"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1461 - SNMP MIB extension for Multiprotocol
+ Interconnect over X.25&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sonet"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SONET or SDH.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="x25ple"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2127 - ISDN Management Information Base using SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88022llc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="localTalk"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="smdsDxi"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frameRelayService"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;FRNETSERV-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2954 - Definitions of Managed Objects for Frame
+ Relay Service&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="v35"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hssi"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hippi"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="modem"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generic modem.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aal5"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;AAL5 over ATM.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sonetPath"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sonetVT"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;/identity&gt;
+ &lt;identity name="smdsIcip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SMDS InterCarrier Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propVirtual"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Proprietary virtual/internal.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863 - The Interfaces Group MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propMultiplexor"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Proprietary multiplexing.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863 - The Interfaces Group MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee80212"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;100BaseVG.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fibreChannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Fibre Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hippiInterface"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;HIPPI interfaces.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frameRelayInterconnect"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="obsolete"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsolete; use either
+frameRelay(32) or frameRelayService(44).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aflane8023"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Emulated LAN for 802.3.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aflane8025"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Emulated LAN for 802.5.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="cctEmul"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Emulated circuit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fastEther"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsoleted via RFC 3635.
+ethernetCsmacd(6) should be used instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="isdn"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISDN and X.25.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
+ in the Packet Mode&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="v11"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT V.11/X.21.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="v36"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT V.36.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="g703at64k"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT G703 at 64Kbps.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="g703at2mb"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="obsolete"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsolete; see DS1-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="qllc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SNA QLLC.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fastEtherFX"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsoleted via RFC 3635.
+ethernetCsmacd(6) should be used instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="channel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee80211"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Radio spread spectrum.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ibm370parChan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM System 360/370 OEMI Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="escon"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM Enterprise Systems Connection.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dlsw"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data Link Switching.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="isdns"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISDN S/T interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="isdnu"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISDN U interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="lapd"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Link Access Protocol D.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ipSwitch"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IP Switching Objects.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rsrb"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Remote Source Route Bridging.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmLogical"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Logical Port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3606 - Definitions of Supplemental Managed Objects
+ for ATM Interface&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ds0"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Digital Signal Level 0.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ds0Bundle"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Group of ds0s on the same ds1.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2494 - Definitions of Managed Objects for the DS0
+ and DS0 Bundle Interface Type&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="bsc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Bisynchronous Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="async"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Asynchronous Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="cnr"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Combat Net Radio.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88025Dtr"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISO 802.5r DTR.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="eplrs"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Ext Pos Loc Report Sys.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="arap"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Appletalk Remote Access Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propCnls"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Proprietary Connectionless Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hostPad"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT-ITU X.29 PAD Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="termPad"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT-ITU X.3 PAD Facility.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frameRelayMPI"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multiproto Interconnect over FR.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="x213"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CCITT-ITU X213.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="adsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Asymmetric Digital Subscriber Loop.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Rate-Adapt. Digital Subscriber Loop.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sdsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symmetric Digital Subscriber Loop.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="vdsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Very H-Speed Digital Subscrib. Loop.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88025CRFPInt"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISO 802.5 CRFP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="myrinet"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Myricom Myrinet.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceEM"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice recEive and transMit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceFXO"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice Foreign Exchange Office.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceFXS"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice Foreign Exchange Station.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceEncap"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice encapsulation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceOverIp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice over IP encapsulation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmDxi"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM DXI.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmFuni"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM FUNI.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmIma"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM IMA.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pppMultilinkBundle"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;PPP Multilink Bundle.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ipOverCdlc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM ipOverCdlc.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ipOverClaw"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM Common Link Access to Workstn.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="stackToStack"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM stackToStack.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="virtualIpAddress"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM VIPA.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mpc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM multi-protocol channel support.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ipOverAtm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM ipOverAtm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2320 - Definitions of Managed Objects for Classical IP
+ and ARP Over ATM Using SMIv2 (IPOA-MIB)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="iso88025Fiber"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISO 802.5j Fiber Token Ring.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="tdlc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IBM twinaxial data link control.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gigabitEthernet"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Obsoleted via RFC 3635.
+ethernetCsmacd(6) should be used instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3635 - Definitions of Managed Objects for the
+ Ethernet-like Interface Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hdlc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;HDLC.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="lapf"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;LAP F.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="v37"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;V.37.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="x25mlp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multi-Link Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="x25huntGroup"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;X25 Hunt Group.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="transpHdlc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Transp HDLC.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="interleave"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Interleave channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fast"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Fast channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IP (for APPN HPR in IP networks).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableMaclayer"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV Mac Layer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableDownstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV Downstream interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableUpstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV Upstream interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="a12MppSwitch"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Avalon Parallel Processor.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="tunnel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Encapsulation interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="coffee"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Coffee pot.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2325 - Coffee MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ces"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Circuit Emulation Service.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmSubInterface"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Sub Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="l2vlan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Layer 2 Virtual LAN using 802.1Q.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="l3ipvlan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Layer 3 Virtual LAN using IP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="l3ipxvlan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Layer 3 Virtual LAN using IPX.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="digitalPowerline"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IP over Power Lines.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mediaMailOverIp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multimedia Mail over IP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dtm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Dynamic synchronous Transfer Mode.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dcn"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data Communications Network.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ipForward"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IP Forwarding Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="msdsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multi-rate Symmetric DSL.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee1394"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IEEE1394 High Performance Serial Bus.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="if-gsn"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;HIPPI-6400.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbRccMacLayer"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-RCC MAC Layer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbRccDownstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-RCC Downstream Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbRccUpstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-RCC Upstream Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmVirtual"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM Virtual Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mplsTunnel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MPLS Tunnel Virtual Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="srp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Spatial Reuse Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceOverAtm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice over ATM.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceOverFrameRelay"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice Over Frame Relay.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="idsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Digital Subscriber Loop over ISDN.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="compositeLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Avici Composite Link Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ss7SigLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SS7 Signaling Link.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propWirelessP2P"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Prop. P2P wireless interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frForward"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Frame Forward Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rfc1483"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multiprotocol over ATM AAL5.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1483 - Multiprotocol Encapsulation over ATM
+ Adaptation Layer 5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="usb"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;USB Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee8023adLag"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IEEE 802.3ad Link Aggregate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="bgppolicyaccounting"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;BGP Policy Accounting.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frf16MfrBundle"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;FRF.16 Multilink Frame Relay.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="h323Gatekeeper"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;H323 Gatekeeper.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="h323Proxy"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;H323 Voice and Video Proxy.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mpls"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MPLS.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mfSigLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multi-frequency signaling link.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hdsl2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;High Bit-Rate DSL - 2nd generation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="shdsl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multirate HDSL2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ds1FDL"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Facility Data Link (4Kbps) on a DS1.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pos"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Packet over SONET/SDH Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbAsiIn"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-ASI Input.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbAsiOut"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-ASI Output.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="plc"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Power Line Communications.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="nfas"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Non-Facility Associated Signaling.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="tr008"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;TR008.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gr303RDT"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Remote Digital Terminal.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gr303IDT"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Integrated Digital Terminal.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="isup"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ISUP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propDocsWirelessMaclayer"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Cisco proprietary Maclayer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propDocsWirelessDownstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Cisco proprietary Downstream.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propDocsWirelessUpstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Cisco proprietary Upstream.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="hiperlan2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;HIPERLAN Type 2 Radio Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propBWAp2Mp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;PropBroadbandWirelessAccesspt2Multipt (use of this value
+for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
+is deprecated, and ieee80216WMAN(237) should be used
+instead).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sonetOverheadChannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SONET Overhead Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="digitalWrapperOverheadChannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Digital Wrapper.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aal2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM adaptation layer 2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radioMAC"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MAC layer over radio links.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmRadio"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM over radio links.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="imt"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Inter-Machine Trunks.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mvl"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Multiple Virtual Lines DSL.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="reachDSL"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Long Reach DSL.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="frDlciEndPt"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Frame Relay DLCI End Point.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmVciEndPt"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;ATM VCI End Point.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="opticalChannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Optical Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="opticalTransport"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Optical Transport.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="propAtm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Proprietary ATM.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceOverCable"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice Over Cable Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="infiniband"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Infiniband.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="teLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;TE Link.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="q2931"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Q.2931.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="virtualTg"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Virtual Trunk Group.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sipTg"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SIP Trunk Group.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sipSig"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;SIP Signaling.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableUpstreamChannel"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV Upstream Channel.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="econet"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Acorn Econet.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pon155"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;FSAN 155Mb Symetrical PON interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pon622"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;FSAN 622Mb Symetrical PON interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="bridge"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Transparent bridge interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="linegroup"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Interface common to multiple lines.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceEMFGD"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice E&amp;amp;M Feature Group D.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceFGDEANA"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice FGD Exchange Access North American.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceDID"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice Direct Inward Dialing.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mpegTransport"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MPEG transport interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="sixToFour"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;6to4 interface (DEPRECATED).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4087 - IP Tunnel MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gtp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;GTP (GPRS Tunneling Protocol).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pdnEtherLoop1"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Paradyne EtherLoop 1.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pdnEtherLoop2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Paradyne EtherLoop 2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="opticalChannelGroup"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Optical Channel Group.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="homepna"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;HomePNA ITU-T G.989.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gfp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generic Framing Procedure (GFP).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ciscoISLvlan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Layer 2 Virtual LAN using Cisco ISL.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="actelisMetaLOOP"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Acteleis proprietary MetaLOOP High Speed Link.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="fcipLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;FCIP Link.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rpr"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Resilient Packet Ring Interface Type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="qam"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;RF Qam Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="lmp"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Link Management Protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4327 - Link Management Protocol (LMP) Management
+ Information Base (MIB)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="cblVectaStar"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Cambridge Broadband Networks Limited VectaStar.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableMCmtsDownstream"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV Modular CMTS Downstream Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="adsl2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Asymmetric Digital Subscriber Loop Version 2
+(DEPRECATED/OBSOLETED - please use adsl2plus(238)
+instead).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4706 - Definitions of Managed Objects for Asymmetric
+ Digital Subscriber Line 2 (ADSL2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="macSecControlledIF"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MACSecControlled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="macSecUncontrolledIF"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MACSecUncontrolled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aviciOpticalEther"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Avici Optical Ethernet Aggregate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="atmbond"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;atmbond.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceFGDOS"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice FGD Operator Services.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="mocaVersion1"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;MultiMedia over Coax Alliance (MoCA) Interface
+as documented in information provided privately to IANA.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee80216WMAN"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IEEE 802.16 WMAN interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="adsl2plus"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Asymmetric Digital Subscriber Loop Version 2 -
+Version 2 Plus and all variants.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbRcsMacLayer"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-RCS MAC Layer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5728 - The SatLabs Group DVB-RCS MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbTdm"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB Satellite TDM.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5728 - The SatLabs Group DVB-RCS MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dvbRcsTdma"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DVB-RCS TDMA.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5728 - The SatLabs Group DVB-RCS MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="x86Laps"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;LAPS based on ITU-T X.86/Y.1323.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="wwanPP"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;3GPP WWAN.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="wwanPP2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;3GPP2 WWAN.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="voiceEBS"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Voice P-phone EBS physical interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ifPwType"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Pseudowire interface type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5601 - Pseudowire (PW) Management Information Base (MIB)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ilan"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Internal LAN on a bridge per IEEE 802.1ap.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="pip"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Provider Instance Port on a bridge per IEEE 802.1ah PBB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluELP"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Alcatel-Lucent Ethernet Link Protection.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="gpon"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Gigabit-capable passive optical networks (G-PON) as per
+ITU-T G.948.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="vdsl2"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Very high speed digital subscriber line Version 2
+(as per ITU-T Recommendation G.993.2).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5650 - Definitions of Managed Objects for Very High
+ Speed Digital Subscriber Line 2 (VDSL2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="capwapDot11Profile"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;WLAN Profile Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="capwapDot11Bss"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;WLAN BSS Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5834 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Binding MIB for
+ IEEE 802.11&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="capwapWtpVirtualRadio"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;WTP Virtual Radio Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5833 - Control and Provisioning of Wireless Access
+ Points (CAPWAP) Protocol Base MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="bits"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;bitsport.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="docsCableUpstreamRfPort"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;DOCSIS CATV Upstream RF Port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="cableDownstreamRfPort"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;CATV downstream RF Port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="vmwareVirtualNic"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;VMware Virtual Network Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ieee802154"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;IEEE 802.15.4 WPAN interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE 802.15.4-2006&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="otnOdu"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;OTN Optical Data Unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="otnOtu"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;OTN Optical channel Transport Unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="ifVfiType"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;VPLS Forwarding Instance Interface Type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="g9981"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;G.998.1 bonded interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="g9982"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;G.998.2 bonded interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="g9983"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;G.998.3 bonded interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluEpon"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Ethernet Passive Optical Networks (E-PON).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluEponOnu"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;EPON Optical Network Unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluEponPhysicalUni"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;EPON physical User to Network interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluEponLogicalLink"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The emulation of a point-to-point link over the EPON
+layer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluGponOnu"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;GPON Optical Network Unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;ITU-T G.984.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="aluGponPhysicalUni"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;GPON physical User to Network interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;ITU-T G.984.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="vmwareNicTeam"&gt;
+ &lt;base name="iana-interface-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;VMware NIC Team.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yang
new file mode 100644
index 00000000..a40d04e5
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yang
@@ -0,0 +1,111 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-datastores {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-datastores";
+ prefix ds;
+
+ organization
+ "IETF Network Modeling (NETMOD) Working Group";
+ contact
+ "WG Web: &lt;https://datatracker.ietf.org/wg/netmod/&gt;
+
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ Author: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;
+
+ Author: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Author: Phil Shafer
+ &lt;mailto:phil@juniper.net&gt;
+
+ Author: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;
+
+ Author: Rob Wilton
+ &lt;rwilton@cisco.com&gt;";
+ description
+ "This YANG module defines two sets of identities for datastores.
+ The first identifies the datastores themselves, the second
+ identifies datastore properties.
+
+ Copyright (c) 2017 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject to
+ the license terms contained in, the Simplified BSD License set
+ forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX
+ (http://www.rfc-editor.org/info/rfcxxxx); see the RFC itself
+ for full legal notices.";
+
+ revision 2017-08-17 {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX: Network Management Datastore Architecture";
+ }
+
+ identity datastore {
+ description
+ "Abstract base identity for datastore identities.";
+ }
+
+ identity conventional {
+ base datastore;
+ description
+ "Abstract base identity for conventional configuration
+ datastores.";
+ }
+
+ identity running {
+ base conventional;
+ description
+ "The running configuration datastore.";
+ }
+
+ identity candidate {
+ base conventional;
+ description
+ "The candidate configuration datastore.";
+ }
+
+ identity startup {
+ base conventional;
+ description
+ "The startup configuration datastore.";
+ }
+
+ identity intended {
+ base conventional;
+ description
+ "The intended configuration datastore.";
+ }
+
+ identity dynamic {
+ base datastore;
+ description
+ "Abstract base identity for dynamic configuration datastores.";
+ }
+
+ identity operational {
+ base datastore;
+ description
+ "The operational state datastore.";
+ }
+
+ typedef datastore-ref {
+ type identityref {
+ base datastore;
+ }
+ description
+ "A datastore identity reference.";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yin
new file mode 100644
index 00000000..13f93b4f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-datastores@2017-08-17.yin
@@ -0,0 +1,117 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-datastores"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-datastores"/&gt;
+ &lt;prefix value="ds"/&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF Network Modeling (NETMOD) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;https://datatracker.ietf.org/wg/netmod/&amp;gt;
+
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+Author: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;
+
+Author: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Author: Phil Shafer
+ &amp;lt;mailto:phil@juniper.net&amp;gt;
+
+Author: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;
+
+Author: Rob Wilton
+ &amp;lt;rwilton@cisco.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This YANG module defines two sets of identities for datastores.
+The first identifies the datastores themselves, the second
+identifies datastore properties.
+
+Copyright (c) 2017 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject to
+the license terms contained in, the Simplified BSD License set
+forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC XXXX
+(http://www.rfc-editor.org/info/rfcxxxx); see the RFC itself
+for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2017-08-17"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC XXXX: Network Management Datastore Architecture&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;identity name="datastore"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Abstract base identity for datastore identities.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="conventional"&gt;
+ &lt;base name="datastore"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Abstract base identity for conventional configuration
+datastores.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="running"&gt;
+ &lt;base name="conventional"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="candidate"&gt;
+ &lt;base name="conventional"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="startup"&gt;
+ &lt;base name="conventional"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="intended"&gt;
+ &lt;base name="conventional"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The intended configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="dynamic"&gt;
+ &lt;base name="datastore"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Abstract base identity for dynamic configuration datastores.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="operational"&gt;
+ &lt;base name="datastore"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The operational state datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;typedef name="datastore-ref"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="datastore"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A datastore identity reference.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yang
new file mode 100644
index 00000000..981cd5be
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yang
@@ -0,0 +1,426 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-inet-types {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+ prefix inet;
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: David Kessens
+ &lt;mailto:david.kessens@nsn.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;";
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types for Internet addresses and related things.
+
+ Copyright (c) 2013 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6991; see
+ the RFC itself for full legal notices.";
+
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - ip-address-no-zone
+ - ipv4-address-no-zone
+ - ipv6-address-no-zone";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ revision 2010-09-24 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 6021: Common YANG Data Types";
+ }
+
+ typedef ip-version {
+ type enumeration {
+ enum "unknown" {
+ value 0;
+ description
+ "An unknown or unspecified version of the Internet
+ protocol.";
+ }
+ enum "ipv4" {
+ value 1;
+ description
+ "The IPv4 protocol as defined in RFC 791.";
+ }
+ enum "ipv6" {
+ value 2;
+ description
+ "The IPv6 protocol as defined in RFC 2460.";
+ }
+ }
+ description
+ "This value represents the version of the IP protocol.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetVersion textual convention of the SMIv2.";
+ reference
+ "RFC 791: Internet Protocol
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+ }
+
+ typedef dscp {
+ type uint8 {
+ range "0..63";
+ }
+ description
+ "The dscp type represents a Differentiated Services Code Point
+ that may be used for marking packets in a traffic stream.
+ In the value set and its semantics, this type is equivalent
+ to the Dscp textual convention of the SMIv2.";
+ reference
+ "RFC 3289: Management Information Base for the Differentiated
+ Services Architecture
+ RFC 2474: Definition of the Differentiated Services Field
+ (DS Field) in the IPv4 and IPv6 Headers
+ RFC 2780: IANA Allocation Guidelines For Values In
+ the Internet Protocol and Related Headers";
+ }
+
+ typedef ipv6-flow-label {
+ type uint32 {
+ range "0..1048575";
+ }
+ description
+ "The ipv6-flow-label type represents the flow identifier or Flow
+ Label in an IPv6 packet header that may be used to
+ discriminate traffic flows.
+
+ In the value set and its semantics, this type is equivalent
+ to the IPv6FlowLabel textual convention of the SMIv2.";
+ reference
+ "RFC 3595: Textual Conventions for IPv6 Flow Label
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+ }
+
+ typedef port-number {
+ type uint16 {
+ range "0..65535";
+ }
+ description
+ "The port-number type represents a 16-bit port number of an
+ Internet transport-layer protocol such as UDP, TCP, DCCP, or
+ SCTP. Port numbers are assigned by IANA. A current list of
+ all assignments is available from &lt;http://www.iana.org/&gt;.
+
+ Note that the port number value zero is reserved by IANA. In
+ situations where the value zero does not make sense, it can
+ be excluded by subtyping the port-number type.
+ In the value set and its semantics, this type is equivalent
+ to the InetPortNumber textual convention of the SMIv2.";
+ reference
+ "RFC 768: User Datagram Protocol
+ RFC 793: Transmission Control Protocol
+ RFC 4960: Stream Control Transmission Protocol
+ RFC 4340: Datagram Congestion Control Protocol (DCCP)
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+ }
+
+ typedef as-number {
+ type uint32;
+ description
+ "The as-number type represents autonomous system numbers
+ which identify an Autonomous System (AS). An AS is a set
+ of routers under a single technical administration, using
+ an interior gateway protocol and common metrics to route
+ packets within the AS, and using an exterior gateway
+ protocol to route packets to other ASes. IANA maintains
+ the AS number space and has delegated large parts to the
+ regional registries.
+
+ Autonomous system numbers were originally limited to 16
+ bits. BGP extensions have enlarged the autonomous system
+ number space to 32 bits. This type therefore uses an uint32
+ base type without a range restriction in order to support
+ a larger autonomous system number space.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetAutonomousSystemNumber textual convention of
+ the SMIv2.";
+ reference
+ "RFC 1930: Guidelines for creation, selection, and registration
+ of an Autonomous System (AS)
+ RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+ RFC 4001: Textual Conventions for Internet Network Addresses
+ RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+ Number Space";
+ }
+
+ typedef ip-address {
+ type union {
+ type inet:ipv4-address;
+ type inet:ipv6-address;
+ }
+ description
+ "The ip-address type represents an IP address and is IP
+ version neutral. The format of the textual representation
+ implies the IP version. This type supports scoped addresses
+ by allowing zone identifiers in the address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+ }
+
+ typedef ipv4-address {
+ type string {
+ pattern "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?";
+ }
+ description
+ "The ipv4-address type represents an IPv4 address in
+ dotted-quad notation. The IPv4 address may include a zone
+ index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+ The canonical format for the zone index is the numerical
+ format";
+ }
+
+ typedef ipv6-address {
+ type string {
+ pattern "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?";
+ pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?";
+ }
+ description
+ "The ipv6-address type represents an IPv6 address in full,
+ mixed, shortened, and shortened-mixed notation. The IPv6
+ address may include a zone index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+ The canonical format of IPv6 addresses uses the textual
+ representation defined in Section 4 of RFC 5952. The
+ canonical format for the zone index is the numerical
+ format as described in Section 11.2 of RFC 4007.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef ip-address-no-zone {
+ type union {
+ type inet:ipv4-address-no-zone;
+ type inet:ipv6-address-no-zone;
+ }
+ description
+ "The ip-address-no-zone type represents an IP address and is
+ IP version neutral. The format of the textual representation
+ implies the IP version. This type does not support scoped
+ addresses since it does not allow zone identifiers in the
+ address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+ }
+
+ typedef ipv4-address-no-zone {
+ type inet:ipv4-address {
+ pattern "[0-9\\.]*";
+ }
+ description
+ "An IPv4 address without a zone index. This type, derived from
+ ipv4-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ }
+
+ typedef ipv6-address-no-zone {
+ type inet:ipv6-address {
+ pattern "[0-9a-fA-F:\\.]*";
+ }
+ description
+ "An IPv6 address without a zone index. This type, derived from
+ ipv6-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef ip-prefix {
+ type union {
+ type inet:ipv4-prefix;
+ type inet:ipv6-prefix;
+ }
+ description
+ "The ip-prefix type represents an IP prefix and is IP
+ version neutral. The format of the textual representations
+ implies the IP version.";
+ }
+
+ typedef ipv4-prefix {
+ type string {
+ pattern "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))";
+ }
+ description
+ "The ipv4-prefix type represents an IPv4 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 32.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The canonical format of an IPv4 prefix has all bits of
+ the IPv4 address set to zero that are not part of the
+ IPv4 prefix.";
+ }
+
+ typedef ipv6-prefix {
+ type string {
+ pattern "((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))";
+ pattern "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)";
+ }
+ description
+ "The ipv6-prefix type represents an IPv6 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 128.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The IPv6 address should have all bits that do not belong
+ to the prefix set to zero.
+
+ The canonical format of an IPv6 prefix has all bits of
+ the IPv6 address set to zero that are not part of the
+ IPv6 prefix. Furthermore, the IPv6 address is represented
+ as defined in Section 4 of RFC 5952.";
+ reference
+ "RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef domain-name {
+ type string {
+ length "1..253";
+ pattern "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\.";
+ }
+ description
+ "The domain-name type represents a DNS domain name. The
+ name SHOULD be fully qualified whenever possible.
+
+ Internet domain names are only loosely specified. Section
+ 3.5 of RFC 1034 recommends a syntax (modified in Section
+ 2.1 of RFC 1123). The pattern above is intended to allow
+ for current practice in domain name use, and some possible
+ future expansion. It is designed to hold various types of
+ domain names, including names used for A or AAAA records
+ (host names) and other records, such as SRV records. Note
+ that Internet host names have a stricter syntax (described
+ in RFC 952) than the DNS recommendations in RFCs 1034 and
+ 1123, and that systems that want to store host names in
+ schema nodes using the domain-name type are recommended to
+ adhere to this stricter standard to ensure interoperability.
+
+ The encoding of DNS names in the DNS protocol is limited
+ to 255 characters. Since the encoding consists of labels
+ prefixed by a length bytes and there is a trailing NULL
+ byte, only 253 characters can appear in the textual dotted
+ notation.
+
+ The description clause of schema nodes using the domain-name
+ type MUST describe when and how these names are resolved to
+ IP addresses. Note that the resolution of a domain-name value
+ may require to query multiple DNS records (e.g., A for IPv4
+ and AAAA for IPv6). The order of the resolution process and
+ which DNS record takes precedence can either be defined
+ explicitly or may depend on the configuration of the
+ resolver.
+
+ Domain-name values use the US-ASCII encoding. Their canonical
+ format uses lowercase US-ASCII characters. Internationalized
+ domain names MUST be A-labels as per RFC 5890.";
+ reference
+ "RFC 952: DoD Internet Host Table Specification
+ RFC 1034: Domain Names - Concepts and Facilities
+ RFC 1123: Requirements for Internet Hosts -- Application
+ and Support
+ RFC 2782: A DNS RR for specifying the location of services
+ (DNS SRV)
+ RFC 5890: Internationalized Domain Names in Applications
+ (IDNA): Definitions and Document Framework";
+ }
+
+ typedef host {
+ type union {
+ type inet:ip-address;
+ type inet:domain-name;
+ }
+ description
+ "The host type represents either an IP address or a DNS
+ domain name.";
+ }
+
+ typedef uri {
+ type string;
+ description
+ "The uri type represents a Uniform Resource Identifier
+ (URI) as defined by STD 66.
+
+ Objects using the uri type MUST be in US-ASCII encoding,
+ and MUST be normalized as described by RFC 3986 Sections
+ 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
+ percent-encoding is removed, and all case-insensitive
+ characters are set to lowercase except for hexadecimal
+ digits, which are normalized to uppercase as described in
+ Section 6.2.2.1.
+
+ The purpose of this normalization is to help provide
+ unique URIs. Note that this normalization is not
+ sufficient to provide uniqueness. Two URIs that are
+ textually distinct after this normalization may still be
+ equivalent.
+
+ Objects using the uri type may restrict the schemes that
+ they permit. For example, 'data:' and 'urn:' schemes
+ might not be appropriate.
+
+ A zero-length URI is not a valid URI. This can be used to
+ express 'URI absent' where required.
+
+ In the value set and its semantics, this type is equivalent
+ to the Uri SMIv2 textual convention defined in RFC 5017.";
+ reference
+ "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+ RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+ Group: Uniform Resource Identifiers (URIs), URLs,
+ and Uniform Resource Names (URNs): Clarifications
+ and Recommendations
+ RFC 5017: MIB Textual Conventions for Uniform Resource
+ Identifiers (URIs)";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yin
new file mode 100644
index 00000000..b4dfee6c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-inet-types@2013-07-15.yin
@@ -0,0 +1,449 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-inet-types"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-inet-types"/&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: David Kessens
+ &amp;lt;mailto:david.kessens@nsn.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of generally useful derived
+YANG data types for Internet addresses and related things.
+
+Copyright (c) 2013 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6991; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2013-07-15"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This revision adds the following new data types:
+- ip-address-no-zone
+- ipv4-address-no-zone
+- ipv6-address-no-zone&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;revision date="2010-09-24"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6021: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="ip-version"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="unknown"&gt;
+ &lt;value value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unknown or unspecified version of the Internet
+protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="ipv4"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv4 protocol as defined in RFC 791.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="ipv6"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv6 protocol as defined in RFC 2460.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This value represents the version of the IP protocol.
+
+In the value set and its semantics, this type is equivalent
+to the InetVersion textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 791: Internet Protocol
+RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+RFC 4001: Textual Conventions for Internet Network Addresses&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="dscp"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="0..63"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The dscp type represents a Differentiated Services Code Point
+that may be used for marking packets in a traffic stream.
+In the value set and its semantics, this type is equivalent
+to the Dscp textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3289: Management Information Base for the Differentiated
+ Services Architecture
+RFC 2474: Definition of the Differentiated Services Field
+ (DS Field) in the IPv4 and IPv6 Headers
+RFC 2780: IANA Allocation Guidelines For Values In
+ the Internet Protocol and Related Headers&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv6-flow-label"&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="0..1048575"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ipv6-flow-label type represents the flow identifier or Flow
+Label in an IPv6 packet header that may be used to
+discriminate traffic flows.
+
+In the value set and its semantics, this type is equivalent
+to the IPv6FlowLabel textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3595: Textual Conventions for IPv6 Flow Label
+RFC 2460: Internet Protocol, Version 6 (IPv6) Specification&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="port-number"&gt;
+ &lt;type name="uint16"&gt;
+ &lt;range value="0..65535"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The port-number type represents a 16-bit port number of an
+Internet transport-layer protocol such as UDP, TCP, DCCP, or
+SCTP. Port numbers are assigned by IANA. A current list of
+all assignments is available from &amp;lt;http://www.iana.org/&amp;gt;.
+
+Note that the port number value zero is reserved by IANA. In
+situations where the value zero does not make sense, it can
+be excluded by subtyping the port-number type.
+In the value set and its semantics, this type is equivalent
+to the InetPortNumber textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 768: User Datagram Protocol
+RFC 793: Transmission Control Protocol
+RFC 4960: Stream Control Transmission Protocol
+RFC 4340: Datagram Congestion Control Protocol (DCCP)
+RFC 4001: Textual Conventions for Internet Network Addresses&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="as-number"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The as-number type represents autonomous system numbers
+which identify an Autonomous System (AS). An AS is a set
+of routers under a single technical administration, using
+an interior gateway protocol and common metrics to route
+packets within the AS, and using an exterior gateway
+protocol to route packets to other ASes. IANA maintains
+the AS number space and has delegated large parts to the
+regional registries.
+
+Autonomous system numbers were originally limited to 16
+bits. BGP extensions have enlarged the autonomous system
+number space to 32 bits. This type therefore uses an uint32
+base type without a range restriction in order to support
+a larger autonomous system number space.
+
+In the value set and its semantics, this type is equivalent
+to the InetAutonomousSystemNumber textual convention of
+the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1930: Guidelines for creation, selection, and registration
+ of an Autonomous System (AS)
+RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+RFC 4001: Textual Conventions for Internet Network Addresses
+RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+ Number Space&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ip-address"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="inet:ipv4-address"/&gt;
+ &lt;type name="inet:ipv6-address"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ip-address type represents an IP address and is IP
+version neutral. The format of the textual representation
+implies the IP version. This type supports scoped addresses
+by allowing zone identifiers in the address format.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4007: IPv6 Scoped Address Architecture&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv4-address"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\p{N}\p{L}]+)?"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ipv4-address type represents an IPv4 address in
+dotted-quad notation. The IPv4 address may include a zone
+index, separated by a % sign.
+
+The zone index is used to disambiguate identical address
+values. For link-local addresses, the zone index will
+typically be the interface index number or the name of an
+interface. If the zone index is not present, the default
+zone of the device will be used.
+
+The canonical format for the zone index is the numerical
+format&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv6-address"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?"/&gt;
+ &lt;pattern value="(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ipv6-address type represents an IPv6 address in full,
+mixed, shortened, and shortened-mixed notation. The IPv6
+address may include a zone index, separated by a % sign.
+
+The zone index is used to disambiguate identical address
+values. For link-local addresses, the zone index will
+typically be the interface index number or the name of an
+interface. If the zone index is not present, the default
+zone of the device will be used.
+
+The canonical format of IPv6 addresses uses the textual
+representation defined in Section 4 of RFC 5952. The
+canonical format for the zone index is the numerical
+format as described in Section 11.2 of RFC 4007.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4291: IP Version 6 Addressing Architecture
+RFC 4007: IPv6 Scoped Address Architecture
+RFC 5952: A Recommendation for IPv6 Address Text
+ Representation&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ip-address-no-zone"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="inet:ipv4-address-no-zone"/&gt;
+ &lt;type name="inet:ipv6-address-no-zone"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ip-address-no-zone type represents an IP address and is
+IP version neutral. The format of the textual representation
+implies the IP version. This type does not support scoped
+addresses since it does not allow zone identifiers in the
+address format.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4007: IPv6 Scoped Address Architecture&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv4-address-no-zone"&gt;
+ &lt;type name="inet:ipv4-address"&gt;
+ &lt;pattern value="[0-9\.]*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;An IPv4 address without a zone index. This type, derived from
+ipv4-address, may be used in situations where the zone is
+known from the context and hence no zone index is needed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv6-address-no-zone"&gt;
+ &lt;type name="inet:ipv6-address"&gt;
+ &lt;pattern value="[0-9a-fA-F:\.]*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;An IPv6 address without a zone index. This type, derived from
+ipv6-address, may be used in situations where the zone is
+known from the context and hence no zone index is needed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4291: IP Version 6 Addressing Architecture
+RFC 4007: IPv6 Scoped Address Architecture
+RFC 5952: A Recommendation for IPv6 Address Text
+ Representation&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ip-prefix"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="inet:ipv4-prefix"/&gt;
+ &lt;type name="inet:ipv6-prefix"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ip-prefix type represents an IP prefix and is IP
+version neutral. The format of the textual representations
+implies the IP version.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv4-prefix"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ipv4-prefix type represents an IPv4 address prefix.
+The prefix length is given by the number following the
+slash character and must be less than or equal to 32.
+
+A prefix length value of n corresponds to an IP address
+mask that has n contiguous 1-bits from the most
+significant bit (MSB) and all other bits set to 0.
+
+The canonical format of an IPv4 prefix has all bits of
+the IPv4 address set to zero that are not part of the
+IPv4 prefix.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="ipv6-prefix"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))"/&gt;
+ &lt;pattern value="(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ipv6-prefix type represents an IPv6 address prefix.
+The prefix length is given by the number following the
+slash character and must be less than or equal to 128.
+
+A prefix length value of n corresponds to an IP address
+mask that has n contiguous 1-bits from the most
+significant bit (MSB) and all other bits set to 0.
+
+The IPv6 address should have all bits that do not belong
+to the prefix set to zero.
+
+The canonical format of an IPv6 prefix has all bits of
+the IPv6 address set to zero that are not part of the
+IPv6 prefix. Furthermore, the IPv6 address is represented
+as defined in Section 4 of RFC 5952.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5952: A Recommendation for IPv6 Address Text
+ Representation&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="domain-name"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..253"/&gt;
+ &lt;pattern value="((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\."/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The domain-name type represents a DNS domain name. The
+name SHOULD be fully qualified whenever possible.
+
+Internet domain names are only loosely specified. Section
+3.5 of RFC 1034 recommends a syntax (modified in Section
+2.1 of RFC 1123). The pattern above is intended to allow
+for current practice in domain name use, and some possible
+future expansion. It is designed to hold various types of
+domain names, including names used for A or AAAA records
+(host names) and other records, such as SRV records. Note
+that Internet host names have a stricter syntax (described
+in RFC 952) than the DNS recommendations in RFCs 1034 and
+1123, and that systems that want to store host names in
+schema nodes using the domain-name type are recommended to
+adhere to this stricter standard to ensure interoperability.
+
+The encoding of DNS names in the DNS protocol is limited
+to 255 characters. Since the encoding consists of labels
+prefixed by a length bytes and there is a trailing NULL
+byte, only 253 characters can appear in the textual dotted
+notation.
+
+The description clause of schema nodes using the domain-name
+type MUST describe when and how these names are resolved to
+IP addresses. Note that the resolution of a domain-name value
+may require to query multiple DNS records (e.g., A for IPv4
+and AAAA for IPv6). The order of the resolution process and
+which DNS record takes precedence can either be defined
+explicitly or may depend on the configuration of the
+resolver.
+
+Domain-name values use the US-ASCII encoding. Their canonical
+format uses lowercase US-ASCII characters. Internationalized
+domain names MUST be A-labels as per RFC 5890.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 952: DoD Internet Host Table Specification
+RFC 1034: Domain Names - Concepts and Facilities
+RFC 1123: Requirements for Internet Hosts -- Application
+ and Support
+RFC 2782: A DNS RR for specifying the location of services
+ (DNS SRV)
+RFC 5890: Internationalized Domain Names in Applications
+ (IDNA): Definitions and Document Framework&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="host"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="inet:ip-address"/&gt;
+ &lt;type name="inet:domain-name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The host type represents either an IP address or a DNS
+domain name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="uri"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The uri type represents a Uniform Resource Identifier
+(URI) as defined by STD 66.
+
+Objects using the uri type MUST be in US-ASCII encoding,
+and MUST be normalized as described by RFC 3986 Sections
+6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
+percent-encoding is removed, and all case-insensitive
+characters are set to lowercase except for hexadecimal
+digits, which are normalized to uppercase as described in
+Section 6.2.2.1.
+
+The purpose of this normalization is to help provide
+unique URIs. Note that this normalization is not
+sufficient to provide uniqueness. Two URIs that are
+textually distinct after this normalization may still be
+equivalent.
+
+Objects using the uri type may restrict the schemes that
+they permit. For example, 'data:' and 'urn:' schemes
+might not be appropriate.
+
+A zero-length URI is not a valid URI. This can be used to
+express 'URI absent' where required.
+
+In the value set and its semantics, this type is equivalent
+to the Uri SMIv2 textual convention defined in RFC 5017.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+ Group: Uniform Resource Identifiers (URIs), URLs,
+ and Uniform Resource Names (URNs): Clarifications
+ and Recommendations
+RFC 5017: MIB Textual Conventions for Uniform Resource
+ Identifiers (URIs)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yang
new file mode 100644
index 00000000..3ea17f92
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yang
@@ -0,0 +1,675 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-interfaces {
+ yang-version 1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
+ prefix if;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: Thomas Nadeau
+ &lt;mailto:tnadeau@lucidvision.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;";
+ description
+ "This module contains a collection of YANG definitions for
+ managing network interfaces.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 7223; see
+ the RFC itself for full legal notices.";
+
+ revision 2014-05-08 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7223: A YANG Data Model for Interface Management";
+ }
+
+ feature arbitrary-names {
+ description
+ "This feature indicates that the device allows user-controlled
+ interfaces to be named arbitrarily.";
+ }
+
+ feature pre-provisioning {
+ description
+ "This feature indicates that the device supports
+ pre-provisioning of interface configuration, i.e., it is
+ possible to configure an interface whose physical interface
+ hardware is not present on the device.";
+ }
+
+ feature if-mib {
+ description
+ "This feature indicates that the device implements
+ the IF-MIB.";
+ reference
+ "RFC 2863: The Interfaces Group MIB";
+ }
+
+ identity interface-type {
+ description
+ "Base identity from which specific interface types are
+ derived.";
+ }
+
+ typedef interface-ref {
+ type leafref {
+ path "/if:interfaces/if:interface/if:name";
+ }
+ description
+ "This type is used by data models that need to reference
+ configured interfaces.";
+ }
+
+ typedef interface-state-ref {
+ type leafref {
+ path "/if:interfaces-state/if:interface/if:name";
+ }
+ description
+ "This type is used by data models that need to reference
+ the operationally present interfaces.";
+ }
+
+ container interfaces {
+ description
+ "Interface configuration parameters.";
+ list interface {
+ key "name";
+ description
+ "The list of configured interfaces on the device.
+
+ The operational state of an interface is available in the
+ /interfaces-state/interface list. If the configuration of a
+ system-controlled interface cannot be used by the system
+ (e.g., the interface hardware present does not match the
+ interface type), then the configuration is not applied to
+ the system-controlled interface shown in the
+ /interfaces-state/interface list. If the configuration
+ of a user-controlled interface cannot be used by the system,
+ the configured interface is not instantiated in the
+ /interfaces-state/interface list.";
+ leaf name {
+ type string;
+ description
+ "The name of the interface.
+
+ A device MAY restrict the allowed values for this leaf,
+ possibly depending on the type of the interface.
+ For system-controlled interfaces, this leaf is the
+ device-specific name of the interface. The 'config false'
+ list /interfaces-state/interface contains the currently
+ existing interfaces on the device.
+
+ If a client tries to create configuration for a
+ system-controlled interface that is not present in the
+ /interfaces-state/interface list, the server MAY reject
+ the request if the implementation does not support
+ pre-provisioning of interfaces or if the name refers to
+ an interface that can never exist in the system. A
+ NETCONF server MUST reply with an rpc-error with the
+ error-tag 'invalid-value' in this case.
+
+ If the device supports pre-provisioning of interface
+ configuration, the 'pre-provisioning' feature is
+ advertised.
+
+ If the device allows arbitrarily named user-controlled
+ interfaces, the 'arbitrary-names' feature is advertised.
+
+ When a configured user-controlled interface is created by
+ the system, it is instantiated with the same name in the
+ /interface-state/interface list.";
+ }
+
+ leaf description {
+ type string;
+ description
+ "A textual description of the interface.
+
+ A server implementation MAY map this leaf to the ifAlias
+ MIB object. Such an implementation needs to use some
+ mechanism to handle the differences in size and characters
+ allowed between this leaf and ifAlias. The definition of
+ such a mechanism is outside the scope of this document.
+
+ Since ifAlias is defined to be stored in non-volatile
+ storage, the MIB implementation MUST map ifAlias to the
+ value of 'description' in the persistently stored
+ datastore.
+
+ Specifically, if the device supports ':startup', when
+ ifAlias is read the device MUST return the value of
+ 'description' in the 'startup' datastore, and when it is
+ written, it MUST be written to the 'running' and 'startup'
+ datastores. Note that it is up to the implementation to
+
+ decide whether to modify this single leaf in 'startup' or
+ perform an implicit copy-config from 'running' to
+ 'startup'.
+
+ If the device does not support ':startup', ifAlias MUST
+ be mapped to the 'description' leaf in the 'running'
+ datastore.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAlias";
+ }
+
+ leaf type {
+ type identityref {
+ base interface-type;
+ }
+ mandatory true;
+ description
+ "The type of the interface.
+
+ When an interface entry is created, a server MAY
+ initialize the type leaf with a valid value, e.g., if it
+ is possible to derive the type from the name of the
+ interface.
+
+ If a client tries to set the type of an interface to a
+ value that can never be used by the system, e.g., if the
+ type is not supported or if the type does not match the
+ name of the interface, the server MUST reject the request.
+ A NETCONF server MUST reply with an rpc-error with the
+ error-tag 'invalid-value' in this case.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifType";
+ }
+
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "This leaf contains the configured, desired state of the
+ interface.
+
+ Systems that implement the IF-MIB use the value of this
+ leaf in the 'running' datastore to set
+ IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
+ has been initialized, as described in RFC 2863.
+
+
+
+ Changes in this leaf in the 'running' datastore are
+ reflected in ifAdminStatus, but if ifAdminStatus is
+ changed over SNMP, this leaf is not affected.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
+ }
+
+ leaf link-up-down-trap-enable {
+ if-feature "if-mib";
+ type enumeration {
+ enum "enabled" {
+ value 1;
+ }
+ enum "disabled" {
+ value 2;
+ }
+ }
+ description
+ "Controls whether linkUp/linkDown SNMP notifications
+ should be generated for this interface.
+
+ If this node is not configured, the value 'enabled' is
+ operationally used by the server for interfaces that do
+ not operate on top of any other interface (i.e., there are
+ no 'lower-layer-if' entries), and 'disabled' otherwise.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifLinkUpDownTrapEnable";
+ }
+ }
+ }
+
+ container interfaces-state {
+ config false;
+ description
+ "Data nodes for the operational state of interfaces.";
+ list interface {
+ key "name";
+ description
+ "The list of interfaces on the device.
+
+ System-controlled interfaces created by the system are
+ always present in this list, whether they are configured or
+ not.";
+ leaf name {
+ type string;
+ description
+ "The name of the interface.
+
+ A server implementation MAY map this leaf to the ifName
+ MIB object. Such an implementation needs to use some
+ mechanism to handle the differences in size and characters
+ allowed between this leaf and ifName. The definition of
+ such a mechanism is outside the scope of this document.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifName";
+ }
+
+ leaf type {
+ type identityref {
+ base interface-type;
+ }
+ mandatory true;
+ description
+ "The type of the interface.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifType";
+ }
+
+ leaf admin-status {
+ if-feature "if-mib";
+ type enumeration {
+ enum "up" {
+ value 1;
+ description
+ "Ready to pass packets.";
+ }
+ enum "down" {
+ value 2;
+ description
+ "Not ready to pass packets and not in some test mode.";
+ }
+ enum "testing" {
+ value 3;
+ description
+ "In some test mode.";
+ }
+ }
+ mandatory true;
+ description
+ "The desired state of the interface.
+
+ This leaf has the same read semantics as ifAdminStatus.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
+ }
+
+ leaf oper-status {
+ type enumeration {
+ enum "up" {
+ value 1;
+ description
+ "Ready to pass packets.";
+ }
+ enum "down" {
+ value 2;
+ description
+ "The interface does not pass any packets.";
+ }
+ enum "testing" {
+ value 3;
+ description
+ "In some test mode. No operational packets can
+ be passed.";
+ }
+ enum "unknown" {
+ value 4;
+ description
+ "Status cannot be determined for some reason.";
+ }
+ enum "dormant" {
+ value 5;
+ description
+ "Waiting for some external event.";
+ }
+ enum "not-present" {
+ value 6;
+ description
+ "Some component (typically hardware) is missing.";
+ }
+ enum "lower-layer-down" {
+ value 7;
+ description
+ "Down due to state of lower-layer interface(s).";
+ }
+ }
+ mandatory true;
+ description
+ "The current operational state of the interface.
+
+ This leaf has the same semantics as ifOperStatus.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOperStatus";
+ }
+
+ leaf last-change {
+ type yang:date-and-time;
+ description
+ "The time the interface entered its current operational
+ state. If the current state was entered prior to the
+ last re-initialization of the local network management
+ subsystem, then this node is not present.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifLastChange";
+ }
+
+ leaf if-index {
+ if-feature "if-mib";
+ type int32 {
+ range "1..2147483647";
+ }
+ mandatory true;
+ description
+ "The ifIndex value for the ifEntry represented by this
+ interface.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifIndex";
+ }
+
+ leaf phys-address {
+ type yang:phys-address;
+ description
+ "The interface's address at its protocol sub-layer. For
+ example, for an 802.x interface, this object normally
+ contains a Media Access Control (MAC) address. The
+ interface's media-specific modules must define the bit
+
+
+ and byte ordering and the format of the value of this
+ object. For interfaces that do not have such an address
+ (e.g., a serial line), this node is not present.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
+ }
+
+ leaf-list higher-layer-if {
+ type interface-state-ref;
+ description
+ "A list of references to interfaces layered on top of this
+ interface.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifStackTable";
+ }
+
+ leaf-list lower-layer-if {
+ type interface-state-ref;
+ description
+ "A list of references to interfaces layered underneath this
+ interface.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifStackTable";
+ }
+
+ leaf speed {
+ type yang:gauge64;
+ units "bits/second";
+ description
+ "An estimate of the interface's current bandwidth in bits
+ per second. For interfaces that do not vary in
+ bandwidth or for those where no accurate estimation can
+ be made, this node should contain the nominal bandwidth.
+ For interfaces that have no concept of bandwidth, this
+ node is not present.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifSpeed, ifHighSpeed";
+ }
+
+ container statistics {
+ description
+ "A collection of interface-related statistics objects.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "The time on the most recent occasion at which any one or
+ more of this interface's counters suffered a
+ discontinuity. If no such discontinuities have occurred
+ since the last re-initialization of the local management
+ subsystem, then this node contains the time the local
+ management subsystem re-initialized itself.";
+ }
+
+ leaf in-octets {
+ type yang:counter64;
+ description
+ "The total number of octets received on the interface,
+ including framing characters.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
+ }
+
+ leaf in-unicast-pkts {
+ type yang:counter64;
+ description
+ "The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were not addressed to a
+ multicast or broadcast address at this sub-layer.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
+ }
+
+ leaf in-broadcast-pkts {
+ type yang:counter64;
+ description
+ "The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were addressed to a broadcast
+ address at this sub-layer.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCInBroadcastPkts";
+ }
+
+ leaf in-multicast-pkts {
+ type yang:counter64;
+ description
+ "The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, that were addressed to a multicast
+ address at this sub-layer. For a MAC-layer protocol,
+ this includes both Group and Functional addresses.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCInMulticastPkts";
+ }
+
+ leaf in-discards {
+ type yang:counter32;
+ description
+ "The number of inbound packets that were chosen to be
+ discarded even though no errors had been detected to
+ prevent their being deliverable to a higher-layer
+ protocol. One possible reason for discarding such a
+ packet could be to free up buffer space.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInDiscards";
+ }
+
+ leaf in-errors {
+ type yang:counter32;
+ description
+ "For packet-oriented interfaces, the number of inbound
+ packets that contained errors preventing them from being
+ deliverable to a higher-layer protocol. For character-
+ oriented or fixed-length interfaces, the number of
+ inbound transmission units that contained errors
+ preventing them from being deliverable to a higher-layer
+ protocol.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInErrors";
+ }
+
+ leaf in-unknown-protos {
+ type yang:counter32;
+ description
+ "For packet-oriented interfaces, the number of packets
+ received via the interface that were discarded because
+ of an unknown or unsupported protocol. For
+ character-oriented or fixed-length interfaces that
+ support protocol multiplexing, the number of
+ transmission units received via the interface that were
+ discarded because of an unknown or unsupported protocol.
+ For any interface that does not support protocol
+ multiplexing, this counter is not present.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
+ }
+
+ leaf out-octets {
+ type yang:counter64;
+ description
+ "The total number of octets transmitted out of the
+ interface, including framing characters.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
+ }
+
+ leaf out-unicast-pkts {
+ type yang:counter64;
+ description
+ "The total number of packets that higher-level protocols
+ requested be transmitted, and that were not addressed
+ to a multicast or broadcast address at this sub-layer,
+ including those that were discarded or not sent.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
+ }
+
+ leaf out-broadcast-pkts {
+ type yang:counter64;
+ description
+ "The total number of packets that higher-level protocols
+ requested be transmitted, and that were addressed to a
+ broadcast address at this sub-layer, including those
+ that were discarded or not sent.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCOutBroadcastPkts";
+ }
+
+ leaf out-multicast-pkts {
+ type yang:counter64;
+ description
+ "The total number of packets that higher-level protocols
+ requested be transmitted, and that were addressed to a
+ multicast address at this sub-layer, including those
+ that were discarded or not sent. For a MAC-layer
+ protocol, this includes both Group and Functional
+ addresses.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB -
+ ifHCOutMulticastPkts";
+ }
+
+ leaf out-discards {
+ type yang:counter32;
+ description
+ "The number of outbound packets that were chosen to be
+ discarded even though no errors had been detected to
+ prevent their being transmitted. One possible reason
+ for discarding such a packet could be to free up buffer
+ space.
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
+ }
+
+ leaf out-errors {
+ type yang:counter32;
+ description
+ "For packet-oriented interfaces, the number of outbound
+ packets that could not be transmitted because of errors.
+ For character-oriented or fixed-length interfaces, the
+ number of outbound transmission units that could not be
+ transmitted because of errors.
+
+
+
+
+ Discontinuities in the value of this counter can occur
+ at re-initialization of the management system, and at
+ other times as indicated by the value of
+ 'discontinuity-time'.";
+ reference
+ "RFC 2863: The Interfaces Group MIB - ifOutErrors";
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yin
new file mode 100644
index 00000000..20cc15cb
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-interfaces@2014-05-08.yin
@@ -0,0 +1,724 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-interfaces"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;yang-version value="1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-interfaces"/&gt;
+ &lt;prefix value="if"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: Thomas Nadeau
+ &amp;lt;mailto:tnadeau@lucidvision.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of YANG definitions for
+managing network interfaces.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 7223; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2014-05-08"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7223: A YANG Data Model for Interface Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="arbitrary-names"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This feature indicates that the device allows user-controlled
+interfaces to be named arbitrarily.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="pre-provisioning"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This feature indicates that the device supports
+pre-provisioning of interface configuration, i.e., it is
+possible to configure an interface whose physical interface
+hardware is not present on the device.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="if-mib"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This feature indicates that the device implements
+the IF-MIB.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;identity name="interface-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity from which specific interface types are
+derived.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;typedef name="interface-ref"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/if:interfaces/if:interface/if:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This type is used by data models that need to reference
+configured interfaces.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="interface-state-ref"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/if:interfaces-state/if:interface/if:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This type is used by data models that need to reference
+the operationally present interfaces.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;container name="interfaces"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Interface configuration parameters.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="interface"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of configured interfaces on the device.
+
+The operational state of an interface is available in the
+/interfaces-state/interface list. If the configuration of a
+system-controlled interface cannot be used by the system
+(e.g., the interface hardware present does not match the
+interface type), then the configuration is not applied to
+the system-controlled interface shown in the
+/interfaces-state/interface list. If the configuration
+of a user-controlled interface cannot be used by the system,
+the configured interface is not instantiated in the
+/interfaces-state/interface list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the interface.
+
+A device MAY restrict the allowed values for this leaf,
+possibly depending on the type of the interface.
+For system-controlled interfaces, this leaf is the
+device-specific name of the interface. The 'config false'
+list /interfaces-state/interface contains the currently
+existing interfaces on the device.
+
+If a client tries to create configuration for a
+system-controlled interface that is not present in the
+/interfaces-state/interface list, the server MAY reject
+the request if the implementation does not support
+pre-provisioning of interfaces or if the name refers to
+an interface that can never exist in the system. A
+NETCONF server MUST reply with an rpc-error with the
+error-tag 'invalid-value' in this case.
+
+If the device supports pre-provisioning of interface
+configuration, the 'pre-provisioning' feature is
+advertised.
+
+If the device allows arbitrarily named user-controlled
+interfaces, the 'arbitrary-names' feature is advertised.
+
+When a configured user-controlled interface is created by
+the system, it is instantiated with the same name in the
+/interface-state/interface list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="description"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A textual description of the interface.
+
+A server implementation MAY map this leaf to the ifAlias
+MIB object. Such an implementation needs to use some
+mechanism to handle the differences in size and characters
+allowed between this leaf and ifAlias. The definition of
+such a mechanism is outside the scope of this document.
+
+Since ifAlias is defined to be stored in non-volatile
+storage, the MIB implementation MUST map ifAlias to the
+value of 'description' in the persistently stored
+datastore.
+
+Specifically, if the device supports ':startup', when
+ifAlias is read the device MUST return the value of
+'description' in the 'startup' datastore, and when it is
+written, it MUST be written to the 'running' and 'startup'
+datastores. Note that it is up to the implementation to
+
+decide whether to modify this single leaf in 'startup' or
+perform an implicit copy-config from 'running' to
+'startup'.
+
+If the device does not support ':startup', ifAlias MUST
+be mapped to the 'description' leaf in the 'running'
+datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifAlias&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="type"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="interface-type"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The type of the interface.
+
+When an interface entry is created, a server MAY
+initialize the type leaf with a valid value, e.g., if it
+is possible to derive the type from the name of the
+interface.
+
+If a client tries to set the type of an interface to a
+value that can never be used by the system, e.g., if the
+type is not supported or if the type does not match the
+name of the interface, the server MUST reject the request.
+A NETCONF server MUST reply with an rpc-error with the
+error-tag 'invalid-value' in this case.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifType&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="enabled"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This leaf contains the configured, desired state of the
+interface.
+
+Systems that implement the IF-MIB use the value of this
+leaf in the 'running' datastore to set
+IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
+has been initialized, as described in RFC 2863.
+
+
+
+Changes in this leaf in the 'running' datastore are
+reflected in ifAdminStatus, but if ifAdminStatus is
+changed over SNMP, this leaf is not affected.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifAdminStatus&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="link-up-down-trap-enable"&gt;
+ &lt;if-feature name="if-mib"/&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="enabled"&gt;
+ &lt;value value="1"/&gt;
+ &lt;/enum&gt;
+ &lt;enum name="disabled"&gt;
+ &lt;value value="2"/&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether linkUp/linkDown SNMP notifications
+should be generated for this interface.
+
+If this node is not configured, the value 'enabled' is
+operationally used by the server for interfaces that do
+not operate on top of any other interface (i.e., there are
+no 'lower-layer-if' entries), and 'disabled' otherwise.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifLinkUpDownTrapEnable&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="interfaces-state"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data nodes for the operational state of interfaces.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="interface"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of interfaces on the device.
+
+System-controlled interfaces created by the system are
+always present in this list, whether they are configured or
+not.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the interface.
+
+A server implementation MAY map this leaf to the ifName
+MIB object. Such an implementation needs to use some
+mechanism to handle the differences in size and characters
+allowed between this leaf and ifName. The definition of
+such a mechanism is outside the scope of this document.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifName&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="type"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="interface-type"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The type of the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifType&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="admin-status"&gt;
+ &lt;if-feature name="if-mib"/&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="up"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Ready to pass packets.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="down"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Not ready to pass packets and not in some test mode.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="testing"&gt;
+ &lt;value value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;In some test mode.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The desired state of the interface.
+
+This leaf has the same read semantics as ifAdminStatus.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifAdminStatus&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="oper-status"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="up"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Ready to pass packets.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="down"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The interface does not pass any packets.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="testing"&gt;
+ &lt;value value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;In some test mode. No operational packets can
+be passed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="unknown"&gt;
+ &lt;value value="4"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Status cannot be determined for some reason.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="dormant"&gt;
+ &lt;value value="5"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Waiting for some external event.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="not-present"&gt;
+ &lt;value value="6"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Some component (typically hardware) is missing.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="lower-layer-down"&gt;
+ &lt;value value="7"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Down due to state of lower-layer interface(s).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The current operational state of the interface.
+
+This leaf has the same semantics as ifOperStatus.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifOperStatus&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="last-change"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The time the interface entered its current operational
+state. If the current state was entered prior to the
+last re-initialization of the local network management
+subsystem, then this node is not present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifLastChange&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="if-index"&gt;
+ &lt;if-feature name="if-mib"/&gt;
+ &lt;type name="int32"&gt;
+ &lt;range value="1..2147483647"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ifIndex value for the ifEntry represented by this
+interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifIndex&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="phys-address"&gt;
+ &lt;type name="yang:phys-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The interface's address at its protocol sub-layer. For
+example, for an 802.x interface, this object normally
+contains a Media Access Control (MAC) address. The
+interface's media-specific modules must define the bit
+
+
+and byte ordering and the format of the value of this
+object. For interfaces that do not have such an address
+(e.g., a serial line), this node is not present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifPhysAddress&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="higher-layer-if"&gt;
+ &lt;type name="interface-state-ref"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of references to interfaces layered on top of this
+interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifStackTable&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf-list name="lower-layer-if"&gt;
+ &lt;type name="interface-state-ref"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of references to interfaces layered underneath this
+interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifStackTable&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf name="speed"&gt;
+ &lt;type name="yang:gauge64"/&gt;
+ &lt;units name="bits/second"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An estimate of the interface's current bandwidth in bits
+per second. For interfaces that do not vary in
+bandwidth or for those where no accurate estimation can
+be made, this node should contain the nominal bandwidth.
+For interfaces that have no concept of bandwidth, this
+node is not present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifSpeed, ifHighSpeed&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;container name="statistics"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A collection of interface-related statistics objects.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="discontinuity-time"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The time on the most recent occasion at which any one or
+more of this interface's counters suffered a
+discontinuity. If no such discontinuities have occurred
+since the last re-initialization of the local management
+subsystem, then this node contains the time the local
+management subsystem re-initialized itself.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-octets"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The total number of octets received on the interface,
+including framing characters.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifHCInOctets&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-unicast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of packets, delivered by this sub-layer to a
+higher (sub-)layer, that were not addressed to a
+multicast or broadcast address at this sub-layer.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-broadcast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of packets, delivered by this sub-layer to a
+higher (sub-)layer, that were addressed to a broadcast
+address at this sub-layer.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifHCInBroadcastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-multicast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of packets, delivered by this sub-layer to a
+higher (sub-)layer, that were addressed to a multicast
+address at this sub-layer. For a MAC-layer protocol,
+this includes both Group and Functional addresses.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifHCInMulticastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-discards"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of inbound packets that were chosen to be
+discarded even though no errors had been detected to
+prevent their being deliverable to a higher-layer
+protocol. One possible reason for discarding such a
+packet could be to free up buffer space.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifInDiscards&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-errors"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;For packet-oriented interfaces, the number of inbound
+packets that contained errors preventing them from being
+deliverable to a higher-layer protocol. For character-
+oriented or fixed-length interfaces, the number of
+inbound transmission units that contained errors
+preventing them from being deliverable to a higher-layer
+protocol.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifInErrors&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-unknown-protos"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;For packet-oriented interfaces, the number of packets
+received via the interface that were discarded because
+of an unknown or unsupported protocol. For
+character-oriented or fixed-length interfaces that
+support protocol multiplexing, the number of
+transmission units received via the interface that were
+discarded because of an unknown or unsupported protocol.
+For any interface that does not support protocol
+multiplexing, this counter is not present.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifInUnknownProtos&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-octets"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The total number of octets transmitted out of the
+interface, including framing characters.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifHCOutOctets&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-unicast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The total number of packets that higher-level protocols
+requested be transmitted, and that were not addressed
+to a multicast or broadcast address at this sub-layer,
+including those that were discarded or not sent.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-broadcast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The total number of packets that higher-level protocols
+requested be transmitted, and that were addressed to a
+broadcast address at this sub-layer, including those
+that were discarded or not sent.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifHCOutBroadcastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-multicast-pkts"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The total number of packets that higher-level protocols
+requested be transmitted, and that were addressed to a
+multicast address at this sub-layer, including those
+that were discarded or not sent. For a MAC-layer
+protocol, this includes both Group and Functional
+addresses.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB -
+ ifHCOutMulticastPkts&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-discards"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of outbound packets that were chosen to be
+discarded even though no errors had been detected to
+prevent their being transmitted. One possible reason
+for discarding such a packet could be to free up buffer
+space.
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifOutDiscards&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-errors"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;For packet-oriented interfaces, the number of outbound
+packets that could not be transmitted because of errors.
+For character-oriented or fixed-length interfaces, the
+number of outbound transmission units that could not be
+transmitted because of errors.
+
+
+
+
+Discontinuities in the value of this counter can occur
+at re-initialization of the management system, and at
+other times as indicated by the value of
+'discontinuity-time'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2863: The Interfaces Group MIB - ifOutErrors&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yang
new file mode 100644
index 00000000..5573f1ea
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yang
@@ -0,0 +1,718 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-ip {
+ yang-version 1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ip";
+ prefix ip;
+
+ import ietf-interfaces {
+ prefix if;
+ }
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: Thomas Nadeau
+ &lt;mailto:tnadeau@lucidvision.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;";
+ description
+ "This module contains a collection of YANG definitions for
+ configuring IP implementations.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 7277; see
+ the RFC itself for full legal notices.";
+
+ revision 2014-06-16 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7277: A YANG Data Model for IP Management";
+ }
+
+ feature ipv4-non-contiguous-netmasks {
+ description
+ "Indicates support for configuring non-contiguous
+ subnet masks.";
+ }
+
+ feature ipv6-privacy-autoconf {
+ description
+ "Indicates support for Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6.";
+ reference
+ "RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6";
+ }
+
+ typedef ip-address-origin {
+ type enumeration {
+ enum "other" {
+ value 0;
+ description
+ "None of the following.";
+ }
+ enum "static" {
+ value 1;
+ description
+ "Indicates that the address has been statically
+ configured - for example, using NETCONF or a Command Line
+ Interface.";
+ }
+ enum "dhcp" {
+ value 2;
+ description
+ "Indicates an address that has been assigned to this
+ system by a DHCP server.";
+ }
+ enum "link-layer" {
+ value 3;
+ description
+ "Indicates an address created by IPv6 stateless
+ autoconfiguration that embeds a link-layer address in its
+ interface identifier.";
+ }
+ enum "random" {
+ value 4;
+ description
+ "Indicates an address chosen by the system at
+
+ random, e.g., an IPv4 address within 169.254/16, an
+ RFC 4941 temporary address, or an RFC 7217 semantically
+ opaque address.";
+ reference
+ "RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+ RFC 7217: A Method for Generating Semantically Opaque
+ Interface Identifiers with IPv6 Stateless
+ Address Autoconfiguration (SLAAC)";
+ }
+ }
+ description
+ "The origin of an address.";
+ }
+
+ typedef neighbor-origin {
+ type enumeration {
+ enum "other" {
+ value 0;
+ description
+ "None of the following.";
+ }
+ enum "static" {
+ value 1;
+ description
+ "Indicates that the mapping has been statically
+ configured - for example, using NETCONF or a Command Line
+ Interface.";
+ }
+ enum "dynamic" {
+ value 2;
+ description
+ "Indicates that the mapping has been dynamically resolved
+ using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
+ protocol.";
+ }
+ }
+ description
+ "The origin of a neighbor entry.";
+ }
+
+ augment "/if:interfaces/if:interface" {
+ description
+ "Parameters for configuring IP on interfaces.
+
+ If an interface is not capable of running IP, the server
+ must not allow the client to configure these parameters.";
+ container ipv4 {
+ presence "Enables IPv4 unless the 'enabled' leaf
+ (which defaults to 'true') is set to 'false'";
+ description
+ "Parameters for the IPv4 address family.";
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "Controls whether IPv4 is enabled or disabled on this
+ interface. When IPv4 is enabled, this interface is
+ connected to an IPv4 stack, and the interface can send
+ and receive IPv4 packets.";
+ }
+
+ leaf forwarding {
+ type boolean;
+ default "false";
+ description
+ "Controls IPv4 packet forwarding of datagrams received by,
+ but not addressed to, this interface. IPv4 routers
+ forward datagrams. IPv4 hosts do not (except those
+ source-routed via the host).";
+ }
+
+ leaf mtu {
+ type uint16 {
+ range "68..max";
+ }
+ units "octets";
+ description
+ "The size, in octets, of the largest IPv4 packet that the
+ interface will send and receive.
+
+ The server may restrict the allowed values for this leaf,
+ depending on the interface's type.
+
+ If this leaf is not configured, the operationally used MTU
+ depends on the interface's type.";
+ reference
+ "RFC 791: Internet Protocol";
+ }
+
+ list address {
+ key "ip";
+ description
+ "The list of configured IPv4 addresses on the interface.";
+ leaf ip {
+ type inet:ipv4-address-no-zone;
+ description
+ "The IPv4 address on the interface.";
+ }
+
+ choice subnet {
+ mandatory true;
+ description
+ "The subnet can be specified as a prefix-length, or,
+ if the server supports non-contiguous netmasks, as
+ a netmask.";
+ leaf prefix-length {
+ type uint8 {
+ range "0..32";
+ }
+ description
+ "The length of the subnet prefix.";
+ }
+
+ leaf netmask {
+ if-feature "ipv4-non-contiguous-netmasks";
+ type yang:dotted-quad;
+ description
+ "The subnet specified as a netmask.";
+ }
+ }
+ }
+
+ list neighbor {
+ key "ip";
+ description
+ "A list of mappings from IPv4 addresses to
+ link-layer addresses.
+
+ Entries in this list are used as static entries in the
+ ARP Cache.";
+ reference
+ "RFC 826: An Ethernet Address Resolution Protocol";
+ leaf ip {
+ type inet:ipv4-address-no-zone;
+ description
+ "The IPv4 address of the neighbor node.";
+ }
+
+ leaf link-layer-address {
+ type yang:phys-address;
+ mandatory true;
+ description
+ "The link-layer address of the neighbor node.";
+ }
+ }
+ }
+
+ container ipv6 {
+ presence "Enables IPv6 unless the 'enabled' leaf
+ (which defaults to 'true') is set to 'false'";
+ description
+ "Parameters for the IPv6 address family.";
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "Controls whether IPv6 is enabled or disabled on this
+ interface. When IPv6 is enabled, this interface is
+ connected to an IPv6 stack, and the interface can send
+ and receive IPv6 packets.";
+ }
+
+ leaf forwarding {
+ type boolean;
+ default "false";
+ description
+ "Controls IPv6 packet forwarding of datagrams received by,
+ but not addressed to, this interface. IPv6 routers
+ forward datagrams. IPv6 hosts do not (except those
+ source-routed via the host).";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 6.2.1, IsRouter";
+ }
+
+ leaf mtu {
+ type uint32 {
+ range "1280..max";
+ }
+ units "octets";
+ description
+ "The size, in octets, of the largest IPv6 packet that the
+ interface will send and receive.
+
+ The server may restrict the allowed values for this leaf,
+ depending on the interface's type.
+
+ If this leaf is not configured, the operationally used MTU
+ depends on the interface's type.";
+ reference
+ "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ Section 5";
+ }
+
+ list address {
+ key "ip";
+ description
+ "The list of configured IPv6 addresses on the interface.";
+ leaf ip {
+ type inet:ipv6-address-no-zone;
+ description
+ "The IPv6 address on the interface.";
+ }
+
+ leaf prefix-length {
+ type uint8 {
+ range "0..128";
+ }
+ mandatory true;
+ description
+ "The length of the subnet prefix.";
+ }
+ }
+
+ list neighbor {
+ key "ip";
+ description
+ "A list of mappings from IPv6 addresses to
+ link-layer addresses.
+
+ Entries in this list are used as static entries in the
+ Neighbor Cache.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
+ leaf ip {
+ type inet:ipv6-address-no-zone;
+ description
+ "The IPv6 address of the neighbor node.";
+ }
+
+ leaf link-layer-address {
+ type yang:phys-address;
+ mandatory true;
+ description
+ "The link-layer address of the neighbor node.";
+ }
+ }
+
+ leaf dup-addr-detect-transmits {
+ type uint32;
+ default "1";
+ description
+ "The number of consecutive Neighbor Solicitation messages
+ sent while performing Duplicate Address Detection on a
+ tentative address. A value of zero indicates that
+ Duplicate Address Detection is not performed on
+ tentative addresses. A value of one indicates a single
+ transmission with no follow-up retransmissions.";
+ reference
+ "RFC 4862: IPv6 Stateless Address Autoconfiguration";
+ }
+
+ container autoconf {
+ description
+ "Parameters to control the autoconfiguration of IPv6
+ addresses, as described in RFC 4862.";
+ reference
+ "RFC 4862: IPv6 Stateless Address Autoconfiguration";
+ leaf create-global-addresses {
+ type boolean;
+ default "true";
+ description
+ "If enabled, the host creates global addresses as
+ described in RFC 4862.";
+ reference
+ "RFC 4862: IPv6 Stateless Address Autoconfiguration
+ Section 5.5";
+ }
+
+ leaf create-temporary-addresses {
+ if-feature "ipv6-privacy-autoconf";
+ type boolean;
+ default "false";
+ description
+ "If enabled, the host creates temporary addresses as
+ described in RFC 4941.";
+ reference
+ "RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6";
+ }
+
+ leaf temporary-valid-lifetime {
+ if-feature "ipv6-privacy-autoconf";
+ type uint32;
+ units "seconds";
+ default "604800";
+ description
+ "The time period during which the temporary address
+ is valid.";
+ reference
+ "RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+ - TEMP_VALID_LIFETIME";
+ }
+
+ leaf temporary-preferred-lifetime {
+ if-feature "ipv6-privacy-autoconf";
+ type uint32;
+ units "seconds";
+ default "86400";
+ description
+ "The time period during which the temporary address is
+ preferred.";
+ reference
+ "RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+ - TEMP_PREFERRED_LIFETIME";
+ }
+ }
+ }
+ }
+
+ augment "/if:interfaces-state/if:interface" {
+ description
+ "Data nodes for the operational state of IP on interfaces.";
+ container ipv4 {
+ presence "Present if IPv4 is enabled on this interface";
+ config false;
+ description
+ "Interface-specific parameters for the IPv4 address family.";
+ leaf forwarding {
+ type boolean;
+ description
+ "Indicates whether IPv4 packet forwarding is enabled or
+ disabled on this interface.";
+ }
+
+ leaf mtu {
+ type uint16 {
+ range "68..max";
+ }
+ units "octets";
+ description
+ "The size, in octets, of the largest IPv4 packet that the
+ interface will send and receive.";
+ reference
+ "RFC 791: Internet Protocol";
+ }
+
+ list address {
+ key "ip";
+ description
+ "The list of IPv4 addresses on the interface.";
+ leaf ip {
+ type inet:ipv4-address-no-zone;
+ description
+ "The IPv4 address on the interface.";
+ }
+
+ choice subnet {
+ description
+ "The subnet can be specified as a prefix-length, or,
+ if the server supports non-contiguous netmasks, as
+ a netmask.";
+ leaf prefix-length {
+ type uint8 {
+ range "0..32";
+ }
+ description
+ "The length of the subnet prefix.";
+ }
+
+ leaf netmask {
+ if-feature "ipv4-non-contiguous-netmasks";
+ type yang:dotted-quad;
+ description
+ "The subnet specified as a netmask.";
+ }
+ }
+
+ leaf origin {
+ type ip-address-origin;
+ description
+ "The origin of this address.";
+ }
+ }
+
+ list neighbor {
+ key "ip";
+ description
+ "A list of mappings from IPv4 addresses to
+ link-layer addresses.
+
+ This list represents the ARP Cache.";
+ reference
+ "RFC 826: An Ethernet Address Resolution Protocol";
+ leaf ip {
+ type inet:ipv4-address-no-zone;
+ description
+ "The IPv4 address of the neighbor node.";
+ }
+
+ leaf link-layer-address {
+ type yang:phys-address;
+ description
+ "The link-layer address of the neighbor node.";
+ }
+
+ leaf origin {
+ type neighbor-origin;
+ description
+ "The origin of this neighbor entry.";
+ }
+ }
+ }
+
+ container ipv6 {
+ presence "Present if IPv6 is enabled on this interface";
+ config false;
+ description
+ "Parameters for the IPv6 address family.";
+ leaf forwarding {
+ type boolean;
+ default "false";
+ description
+ "Indicates whether IPv6 packet forwarding is enabled or
+ disabled on this interface.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 6.2.1, IsRouter";
+ }
+
+ leaf mtu {
+ type uint32 {
+ range "1280..max";
+ }
+ units "octets";
+ description
+ "The size, in octets, of the largest IPv6 packet that the
+ interface will send and receive.";
+ reference
+ "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ Section 5";
+ }
+
+ list address {
+ key "ip";
+ description
+ "The list of IPv6 addresses on the interface.";
+ leaf ip {
+ type inet:ipv6-address-no-zone;
+ description
+ "The IPv6 address on the interface.";
+ }
+
+ leaf prefix-length {
+ type uint8 {
+ range "0..128";
+ }
+ mandatory true;
+ description
+ "The length of the subnet prefix.";
+ }
+
+ leaf origin {
+ type ip-address-origin;
+ description
+ "The origin of this address.";
+ }
+
+ leaf status {
+ type enumeration {
+ enum "preferred" {
+ value 0;
+ description
+ "This is a valid address that can appear as the
+ destination or source address of a packet.";
+ }
+ enum "deprecated" {
+ value 1;
+ description
+ "This is a valid but deprecated address that should
+ no longer be used as a source address in new
+ communications, but packets addressed to such an
+ address are processed as expected.";
+ }
+ enum "invalid" {
+ value 2;
+ description
+ "This isn't a valid address, and it shouldn't appear
+ as the destination or source address of a packet.";
+ }
+ enum "inaccessible" {
+ value 3;
+ description
+ "The address is not accessible because the interface
+ to which this address is assigned is not
+ operational.";
+ }
+ enum "unknown" {
+ value 4;
+ description
+ "The status cannot be determined for some reason.";
+ }
+ enum "tentative" {
+ value 5;
+ description
+ "The uniqueness of the address on the link is being
+ verified. Addresses in this state should not be
+ used for general communication and should only be
+ used to determine the uniqueness of the address.";
+ }
+ enum "duplicate" {
+ value 6;
+ description
+ "The address has been determined to be non-unique on
+ the link and so must not be used.";
+ }
+ enum "optimistic" {
+ value 7;
+ description
+ "The address is available for use, subject to
+ restrictions, while its uniqueness on a link is
+ being verified.";
+ }
+ }
+ description
+ "The status of an address. Most of the states correspond
+ to states from the IPv6 Stateless Address
+ Autoconfiguration protocol.";
+ reference
+ "RFC 4293: Management Information Base for the
+ Internet Protocol (IP)
+ - IpAddressStatusTC
+ RFC 4862: IPv6 Stateless Address Autoconfiguration";
+ }
+ }
+
+ list neighbor {
+ key "ip";
+ description
+ "A list of mappings from IPv6 addresses to
+ link-layer addresses.
+
+ This list represents the Neighbor Cache.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
+ leaf ip {
+ type inet:ipv6-address-no-zone;
+ description
+ "The IPv6 address of the neighbor node.";
+ }
+
+ leaf link-layer-address {
+ type yang:phys-address;
+ description
+ "The link-layer address of the neighbor node.";
+ }
+
+ leaf origin {
+ type neighbor-origin;
+ description
+ "The origin of this neighbor entry.";
+ }
+
+ leaf is-router {
+ type empty;
+ description
+ "Indicates that the neighbor node acts as a router.";
+ }
+
+ leaf state {
+ type enumeration {
+ enum "incomplete" {
+ value 0;
+ description
+ "Address resolution is in progress, and the link-layer
+ address of the neighbor has not yet been
+ determined.";
+ }
+ enum "reachable" {
+ value 1;
+ description
+ "Roughly speaking, the neighbor is known to have been
+ reachable recently (within tens of seconds ago).";
+ }
+ enum "stale" {
+ value 2;
+ description
+ "The neighbor is no longer known to be reachable, but
+ until traffic is sent to the neighbor no attempt
+ should be made to verify its reachability.";
+ }
+ enum "delay" {
+ value 3;
+ description
+ "The neighbor is no longer known to be reachable, and
+ traffic has recently been sent to the neighbor.
+ Rather than probe the neighbor immediately, however,
+ delay sending probes for a short while in order to
+ give upper-layer protocols a chance to provide
+ reachability confirmation.";
+ }
+ enum "probe" {
+ value 4;
+ description
+ "The neighbor is no longer known to be reachable, and
+ unicast Neighbor Solicitation probes are being sent
+ to verify reachability.";
+ }
+ }
+ description
+ "The Neighbor Unreachability Detection state of this
+ entry.";
+ reference
+ "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 7.3.2";
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yin
new file mode 100644
index 00000000..503e2b9a
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ip@2014-06-16.yin
@@ -0,0 +1,782 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-ip"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ip="urn:ietf:params:xml:ns:yang:ietf-ip"
+ xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;yang-version value="1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-ip"/&gt;
+ &lt;prefix value="ip"/&gt;
+ &lt;import module="ietf-interfaces"&gt;
+ &lt;prefix value="if"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: Thomas Nadeau
+ &amp;lt;mailto:tnadeau@lucidvision.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of YANG definitions for
+configuring IP implementations.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 7277; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2014-06-16"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7277: A YANG Data Model for IP Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="ipv4-non-contiguous-netmasks"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates support for configuring non-contiguous
+subnet masks.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="ipv6-privacy-autoconf"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates support for Privacy Extensions for Stateless Address
+Autoconfiguration in IPv6.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;typedef name="ip-address-origin"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="other"&gt;
+ &lt;value value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;None of the following.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="static"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the address has been statically
+configured - for example, using NETCONF or a Command Line
+Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="dhcp"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates an address that has been assigned to this
+system by a DHCP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="link-layer"&gt;
+ &lt;value value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates an address created by IPv6 stateless
+autoconfiguration that embeds a link-layer address in its
+interface identifier.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="random"&gt;
+ &lt;value value="4"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates an address chosen by the system at
+
+random, e.g., an IPv4 address within 169.254/16, an
+RFC 4941 temporary address, or an RFC 7217 semantically
+opaque address.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+RFC 7217: A Method for Generating Semantically Opaque
+ Interface Identifiers with IPv6 Stateless
+ Address Autoconfiguration (SLAAC)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of an address.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="neighbor-origin"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="other"&gt;
+ &lt;value value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;None of the following.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="static"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the mapping has been statically
+configured - for example, using NETCONF or a Command Line
+Interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="dynamic"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the mapping has been dynamically resolved
+using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
+protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of a neighbor entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;augment target-node="/if:interfaces/if:interface"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for configuring IP on interfaces.
+
+If an interface is not capable of running IP, the server
+must not allow the client to configure these parameters.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="ipv4"&gt;
+ &lt;presence value="Enables IPv4 unless the 'enabled' leaf
+(which defaults to 'true') is set to 'false'"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for the IPv4 address family.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="enabled"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether IPv4 is enabled or disabled on this
+interface. When IPv4 is enabled, this interface is
+connected to an IPv4 stack, and the interface can send
+and receive IPv4 packets.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="forwarding"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls IPv4 packet forwarding of datagrams received by,
+but not addressed to, this interface. IPv4 routers
+forward datagrams. IPv4 hosts do not (except those
+source-routed via the host).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="mtu"&gt;
+ &lt;type name="uint16"&gt;
+ &lt;range value="68..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="octets"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The size, in octets, of the largest IPv4 packet that the
+interface will send and receive.
+
+The server may restrict the allowed values for this leaf,
+depending on the interface's type.
+
+If this leaf is not configured, the operationally used MTU
+depends on the interface's type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 791: Internet Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;list name="address"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of configured IPv4 addresses on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv4-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv4 address on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="subnet"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The subnet can be specified as a prefix-length, or,
+if the server supports non-contiguous netmasks, as
+a netmask.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="prefix-length"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="0..32"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The length of the subnet prefix.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="netmask"&gt;
+ &lt;if-feature name="ipv4-non-contiguous-netmasks"/&gt;
+ &lt;type name="yang:dotted-quad"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The subnet specified as a netmask.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/list&gt;
+ &lt;list name="neighbor"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of mappings from IPv4 addresses to
+link-layer addresses.
+
+Entries in this list are used as static entries in the
+ARP Cache.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 826: An Ethernet Address Resolution Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv4-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv4 address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="link-layer-address"&gt;
+ &lt;type name="yang:phys-address"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The link-layer address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="ipv6"&gt;
+ &lt;presence value="Enables IPv6 unless the 'enabled' leaf
+(which defaults to 'true') is set to 'false'"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for the IPv6 address family.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="enabled"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether IPv6 is enabled or disabled on this
+interface. When IPv6 is enabled, this interface is
+connected to an IPv6 stack, and the interface can send
+and receive IPv6 packets.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="forwarding"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls IPv6 packet forwarding of datagrams received by,
+but not addressed to, this interface. IPv6 routers
+forward datagrams. IPv6 hosts do not (except those
+source-routed via the host).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 6.2.1, IsRouter&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="mtu"&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="1280..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="octets"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The size, in octets, of the largest IPv6 packet that the
+interface will send and receive.
+
+The server may restrict the allowed values for this leaf,
+depending on the interface's type.
+
+If this leaf is not configured, the operationally used MTU
+depends on the interface's type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ Section 5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;list name="address"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of configured IPv6 addresses on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv6-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv6 address on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="prefix-length"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="0..128"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The length of the subnet prefix.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;list name="neighbor"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of mappings from IPv6 addresses to
+link-layer addresses.
+
+Entries in this list are used as static entries in the
+Neighbor Cache.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4861: Neighbor Discovery for IP version 6 (IPv6)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv6-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv6 address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="link-layer-address"&gt;
+ &lt;type name="yang:phys-address"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The link-layer address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;leaf name="dup-addr-detect-transmits"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;default value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of consecutive Neighbor Solicitation messages
+sent while performing Duplicate Address Detection on a
+tentative address. A value of zero indicates that
+Duplicate Address Detection is not performed on
+tentative addresses. A value of one indicates a single
+transmission with no follow-up retransmissions.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4862: IPv6 Stateless Address Autoconfiguration&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;container name="autoconf"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters to control the autoconfiguration of IPv6
+addresses, as described in RFC 4862.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4862: IPv6 Stateless Address Autoconfiguration&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="create-global-addresses"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;If enabled, the host creates global addresses as
+described in RFC 4862.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4862: IPv6 Stateless Address Autoconfiguration
+ Section 5.5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="create-temporary-addresses"&gt;
+ &lt;if-feature name="ipv6-privacy-autoconf"/&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;If enabled, the host creates temporary addresses as
+described in RFC 4941.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="temporary-valid-lifetime"&gt;
+ &lt;if-feature name="ipv6-privacy-autoconf"/&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="604800"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The time period during which the temporary address
+is valid.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+ - TEMP_VALID_LIFETIME&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="temporary-preferred-lifetime"&gt;
+ &lt;if-feature name="ipv6-privacy-autoconf"/&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="86400"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The time period during which the temporary address is
+preferred.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4941: Privacy Extensions for Stateless Address
+ Autoconfiguration in IPv6
+ - TEMP_PREFERRED_LIFETIME&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;/augment&gt;
+ &lt;augment target-node="/if:interfaces-state/if:interface"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data nodes for the operational state of IP on interfaces.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="ipv4"&gt;
+ &lt;presence value="Present if IPv4 is enabled on this interface"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Interface-specific parameters for the IPv4 address family.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="forwarding"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates whether IPv4 packet forwarding is enabled or
+disabled on this interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="mtu"&gt;
+ &lt;type name="uint16"&gt;
+ &lt;range value="68..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="octets"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The size, in octets, of the largest IPv4 packet that the
+interface will send and receive.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 791: Internet Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;list name="address"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of IPv4 addresses on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv4-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv4 address on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="subnet"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The subnet can be specified as a prefix-length, or,
+if the server supports non-contiguous netmasks, as
+a netmask.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="prefix-length"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="0..32"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The length of the subnet prefix.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="netmask"&gt;
+ &lt;if-feature name="ipv4-non-contiguous-netmasks"/&gt;
+ &lt;type name="yang:dotted-quad"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The subnet specified as a netmask.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;leaf name="origin"&gt;
+ &lt;type name="ip-address-origin"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of this address.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;list name="neighbor"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of mappings from IPv4 addresses to
+link-layer addresses.
+
+This list represents the ARP Cache.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 826: An Ethernet Address Resolution Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv4-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv4 address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="link-layer-address"&gt;
+ &lt;type name="yang:phys-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The link-layer address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="origin"&gt;
+ &lt;type name="neighbor-origin"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of this neighbor entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="ipv6"&gt;
+ &lt;presence value="Present if IPv6 is enabled on this interface"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for the IPv6 address family.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="forwarding"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates whether IPv6 packet forwarding is enabled or
+disabled on this interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 6.2.1, IsRouter&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="mtu"&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="1280..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="octets"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The size, in octets, of the largest IPv6 packet that the
+interface will send and receive.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ Section 5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;list name="address"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of IPv6 addresses on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv6-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv6 address on the interface.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="prefix-length"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="0..128"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The length of the subnet prefix.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="origin"&gt;
+ &lt;type name="ip-address-origin"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of this address.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="status"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="preferred"&gt;
+ &lt;value value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This is a valid address that can appear as the
+destination or source address of a packet.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="deprecated"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This is a valid but deprecated address that should
+no longer be used as a source address in new
+communications, but packets addressed to such an
+address are processed as expected.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="invalid"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This isn't a valid address, and it shouldn't appear
+as the destination or source address of a packet.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="inaccessible"&gt;
+ &lt;value value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address is not accessible because the interface
+to which this address is assigned is not
+operational.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="unknown"&gt;
+ &lt;value value="4"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The status cannot be determined for some reason.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="tentative"&gt;
+ &lt;value value="5"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The uniqueness of the address on the link is being
+verified. Addresses in this state should not be
+used for general communication and should only be
+used to determine the uniqueness of the address.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="duplicate"&gt;
+ &lt;value value="6"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address has been determined to be non-unique on
+the link and so must not be used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="optimistic"&gt;
+ &lt;value value="7"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address is available for use, subject to
+restrictions, while its uniqueness on a link is
+being verified.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The status of an address. Most of the states correspond
+to states from the IPv6 Stateless Address
+Autoconfiguration protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4293: Management Information Base for the
+ Internet Protocol (IP)
+ - IpAddressStatusTC
+RFC 4862: IPv6 Stateless Address Autoconfiguration&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;list name="neighbor"&gt;
+ &lt;key value="ip"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of mappings from IPv6 addresses to
+link-layer addresses.
+
+This list represents the Neighbor Cache.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4861: Neighbor Discovery for IP version 6 (IPv6)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="ip"&gt;
+ &lt;type name="inet:ipv6-address-no-zone"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IPv6 address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="link-layer-address"&gt;
+ &lt;type name="yang:phys-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The link-layer address of the neighbor node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="origin"&gt;
+ &lt;type name="neighbor-origin"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The origin of this neighbor entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="is-router"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the neighbor node acts as a router.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="incomplete"&gt;
+ &lt;value value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Address resolution is in progress, and the link-layer
+address of the neighbor has not yet been
+determined.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="reachable"&gt;
+ &lt;value value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Roughly speaking, the neighbor is known to have been
+reachable recently (within tens of seconds ago).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="stale"&gt;
+ &lt;value value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The neighbor is no longer known to be reachable, but
+until traffic is sent to the neighbor no attempt
+should be made to verify its reachability.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="delay"&gt;
+ &lt;value value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The neighbor is no longer known to be reachable, and
+traffic has recently been sent to the neighbor.
+Rather than probe the neighbor immediately, however,
+delay sending probes for a short while in order to
+give upper-layer protocols a chance to provide
+reachability confirmation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="probe"&gt;
+ &lt;value value="4"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The neighbor is no longer known to be reachable, and
+unicast Neighbor Solicitation probes are being sent
+to verify reachability.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Neighbor Unreachability Detection state of this
+entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
+ Section 7.3.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/augment&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yang
new file mode 100644
index 00000000..0c20bd6e
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yang
@@ -0,0 +1,559 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-keystore {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-keystore";
+ prefix ks;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Mahesh Jethanandani
+ &lt;mailto:mjethanandani@gmail.com&gt;
+
+ Editor: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;";
+ description
+ "This module defines a keystore to centralize management of
+ security credentials.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC VVVV; see
+ the RFC itself for full legal notices.";
+
+ revision 2016-10-31 {
+ description
+ "Initial version";
+ reference
+ "RFC VVVV: NETCONF Server and RESTCONF Server Configuration
+ Models";
+ }
+
+ identity key-algorithm {
+ description
+ "Base identity from which all key-algorithms are derived.";
+ }
+
+ identity rsa {
+ base key-algorithm;
+ description
+ "The RSA algorithm.";
+ reference
+ "RFC3447: Public-Key Cryptography Standards (PKCS) #1:
+ RSA Cryptography Specifications Version 2.1.";
+ }
+
+ identity secp192r1 {
+ base key-algorithm;
+ description
+ "The secp192r1 algorithm.";
+ reference
+ "RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.";
+ }
+
+ identity secp256r1 {
+ base key-algorithm;
+ description
+ "The secp256r1 algorithm.";
+ reference
+ "RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.";
+ }
+
+ identity secp384r1 {
+ base key-algorithm;
+ description
+ "The secp384r1 algorithm.";
+ reference
+ "RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.";
+ }
+
+ identity secp521r1 {
+ base key-algorithm;
+ description
+ "The secp521r1 algorithm.";
+ reference
+ "RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.";
+ }
+
+ container keystore {
+ description
+ "A list of private-keys and their associated certificates, as
+ well as lists of trusted certificates for client certificate
+ authentication. RPCs are provided to generate a new private
+ key and to generate a certificate signing requests.";
+ container private-keys {
+ description
+ "A list of private key maintained by the keystore.";
+ list private-key {
+ key "name";
+ description
+ "A private key.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the private key.";
+ }
+
+ leaf algorithm {
+ type identityref {
+ base key-algorithm;
+ }
+ config false;
+ description
+ "The algorithm used by the private key.";
+ }
+
+ leaf key-length {
+ type uint32;
+ config false;
+ description
+ "The key-length used by the private key.";
+ }
+
+ leaf public-key {
+ type binary;
+ config false;
+ mandatory true;
+ description
+ "An OneAsymmetricKey 'publicKey' structure as specified
+ by RFC 5958, Section 2 encoded using the ASN.1
+ distinguished encoding rules (DER), as specified
+ in ITU-T X.690.";
+ reference
+ "RFC 5958:
+ Asymmetric Key Packages
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+
+ container certificate-chains {
+ description
+ "Certificate chains associated with this private key.
+ More than one chain per key is enabled to support,
+ for instance, a TPM-protected key that has associated
+ both IDevID and LDevID certificates.";
+ list certificate-chain {
+ key "name";
+ description
+ "A certificate chain for this public key.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the certificate chain. The
+ name must be a unique across all private keys, not
+ just within this private key.";
+ }
+
+ leaf-list certificate {
+ type binary;
+ ordered-by user;
+ description
+ "An X.509 v3 certificate structure as specified by RFC
+ 5280, Section 4 encoded using the ASN.1 distinguished
+ encoding rules (DER), as specified in ITU-T X.690.
+ The list of certificates that run from the server
+ certificate towards the trust anchor. The chain MAY
+ include the trust anchor certificate itself.";
+ reference
+ "RFC 5280:
+ Internet X.509 Public Key Infrastructure Certificate
+ and Certificate Revocation List (CRL) Profile.
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+ }
+
+ action generate-certificate-signing-request {
+ description
+ "Generates a certificate signing request structure for
+ the associated private key using the passed subject and
+ attribute values. Please review both the Security
+ Considerations and Design Considerations sections in
+ RFC VVVV for more information regarding this action
+ statement.";
+ input {
+ leaf subject {
+ type binary;
+ mandatory true;
+ description
+ "The 'subject' field from the CertificationRequestInfo
+ structure as specified by RFC 2986, Section 4.1 encoded
+ using the ASN.1 distinguished encoding rules (DER), as
+ specified in ITU-T X.690.";
+ reference
+ "RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+
+ leaf attributes {
+ type binary;
+ description
+ "The 'attributes' field from the CertificationRequestInfo
+ structure as specified by RFC 2986, Section 4.1 encoded
+ using the ASN.1 distinguished encoding rules (DER), as
+ specified in ITU-T X.690.";
+ reference
+ "RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+
+ output {
+ leaf certificate-signing-request {
+ type binary;
+ mandatory true;
+ description
+ "A CertificationRequest structure as specified by RFC
+ 2986, Section 4.1 encoded using the ASN.1 distinguished
+ encoding rules (DER), as specified in ITU-T X.690.";
+ reference
+ "RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+ }
+ }
+
+ action generate-private-key {
+ description
+ "Requests the device to generate a private key using the
+ specified algorithm and key length.";
+ input {
+ leaf name {
+ type string;
+ mandatory true;
+ description
+ "The name this private-key should have when listed
+ in /keystore/private-keys. As such, the passed
+ value must not match any existing 'name' value.";
+ }
+
+ leaf algorithm {
+ type identityref {
+ base key-algorithm;
+ }
+ mandatory true;
+ description
+ "The algorithm to be used when generating the key.";
+ }
+
+ leaf key-length {
+ type uint32;
+ description
+ "For algorithms that need a key length specified
+ when generating the key.";
+ }
+ }
+ }
+
+ action load-private-key {
+ description
+ "Requests the device to load a private key";
+ input {
+ leaf name {
+ type string;
+ mandatory true;
+ description
+ "The name this private-key should have when listed
+ in /keystore/private-keys. As such, the passed
+ value must not match any existing 'name' value.";
+ }
+
+ leaf private-key {
+ type binary;
+ mandatory true;
+ description
+ "An OneAsymmetricKey structure as specified by RFC
+ 5958, Section 2 encoded using the ASN.1 distinguished
+ encoding rules (DER), as specified in ITU-T X.690.
+ Note that this is the raw private with no shrouding
+ to protect it. The strength of this private key
+ MUST NOT be greater than the strength of the secure
+ connection over which it is communicated. Devices
+ SHOULD fail this request if ever that happens.";
+ reference
+ "RFC 5958:
+ Asymmetric Key Packages
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+ }
+ }
+
+ list trusted-certificates {
+ key "name";
+ description
+ "A list of trusted certificates. These certificates
+ can be used by a server to authenticate clients, or by clients
+ to authenticate servers. The certificates may be endpoint
+ specific or for certificate authorities (to authenticate many
+ clients at once. Each list of certificates SHOULD be specific
+ to a purpose, as the list as a whole may be referenced by other
+ modules. For instance, a NETCONF server model might point to
+ a list of certificates to use when authenticating client
+ certificates.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this list of trusted certificates.";
+ }
+
+ leaf description {
+ type string;
+ description
+ "An arbitrary description for this list of trusted
+ certificates.";
+ }
+
+ list trusted-certificate {
+ key "name";
+ description
+ "A trusted certificate for a specific use. Note, this
+ 'certificate' is a list in order to encode any
+ associated intermediate certificates.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this trusted certificate. Must
+ be unique across all lists of trusted certificates
+ (not just this list) so that a leafref to it from
+ another module can resolve to unique values.";
+ }
+
+ leaf certificate {
+ type binary;
+ description
+ "An X.509 v3 certificate structure as specified by RFC
+ 5280, Section 4 encoded using the ASN.1 distinguished
+ encoding rules (DER), as specified in ITU-T X.690.";
+ reference
+ "RFC 5280:
+ Internet X.509 Public Key Infrastructure Certificate
+ and Certificate Revocation List (CRL) Profile.
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+ }
+
+ list trusted-ssh-host-keys {
+ key "name";
+ description
+ "A list of trusted host-keys. These host-keys can be used
+ by clients to authenticate SSH servers. The host-keys are
+ endpoint specific. Each list of host-keys SHOULD be
+ specific to a purpose, as the list as a whole may be
+ referenced by other modules. For instance, a NETCONF
+ client model might point to a list of host-keys to use
+ when authenticating servers host-keys.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this list of trusted SSH host keys.";
+ }
+
+ leaf description {
+ type string;
+ description
+ "An arbitrary description for this list of trusted SSH host
+ keys.";
+ }
+
+ list trusted-host-key {
+ key "name";
+ description
+ "A trusted host key.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this trusted host-key. Must be
+ unique across all lists of trusted host-keys (not just
+ this list) so that a leafref to it from another module
+ can resolve to unique values.
+
+ Note that, for when the SSH client is able to listen
+ for call-home connections as well, there is no reference
+ identifier (e.g., hostname, IP address, etc.) that it
+ can use to uniquely identify the server with. The
+ call-home draft recommends SSH servers use X.509v3
+ certificates (RFC6187) when calling home.";
+ }
+
+ leaf host-key {
+ type binary;
+ mandatory true;
+ description
+ "An OneAsymmetricKey 'publicKey' structure as specified
+ by RFC 5958, Section 2 encoded using the ASN.1
+ distinguished encoding rules (DER), as specified
+ in ITU-T X.690.";
+ reference
+ "RFC 5958:
+ Asymmetric Key Packages
+ ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).";
+ }
+ }
+ }
+
+ container user-auth-credentials {
+ description
+ "A list of user authentication credentials that can be used
+ by an SSH client to log into an SSH server, using any of
+ the supported authentication methods (e.g., password,
+ public key, client certificate, etc.).";
+ list user-auth-credential {
+ key "username";
+ description
+ "The authentication credentials for a specific user.";
+ leaf username {
+ type string;
+ description
+ "The username of this user. This will be the username
+ used, for instance, to log into an SSH server.";
+ }
+
+ list auth-method {
+ key "priority";
+ description
+ "A method of authenticating as this user.";
+ leaf priority {
+ type uint8;
+ description
+ "When multiple authentication methods in this list are
+ supported by the server, the one with the lowest priority
+ value will be the one that is used.";
+ }
+
+ choice auth-type {
+ description
+ "The authentication type.";
+ leaf-list certificate {
+ type leafref {
+ path "/keystore/private-keys/private-key/certificate-chains/certificate-chain/name";
+ }
+ ordered-by user;
+ description
+ "A list of references to certificates that can be used
+ for user authentication. When multiple certificates
+ in this list supported by the server, the one that
+ comes before the others in the leaf-list will be
+ used.";
+ }
+
+ leaf-list public-key {
+ type leafref {
+ path "/keystore/private-keys/private-key/name";
+ }
+ ordered-by user;
+ description
+ "A list of references to public keys that can be used
+ for user authentication. When multiple public keys
+ in this list supported by the server, the one that
+ comes before the others in the leaf-list will be
+ used.";
+ }
+
+ leaf ciphertext-password {
+ type string;
+ description
+ "An ciphertext password. The method of encipherment
+ and how that method can be determined from this
+ string is implementation-specific.";
+ }
+
+ leaf cleartext-password {
+ type string;
+ description
+ "An cleartext password.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ notification certificate-expiration {
+ description
+ "A notification indicating that a configured certificate is
+ either about to expire or has already expired. When to send
+ notifications is an implementation specific decision, but
+ it is RECOMMENDED that a notification be sent once a month
+ for 3 months, then once a week for four weeks, and then once
+ a day thereafter.";
+ leaf certificate {
+ type instance-identifier;
+ mandatory true;
+ description
+ "Identifies which certificate is expiring or is expired.";
+ }
+
+ leaf expiration-date {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "Identifies the expiration date on the certificate.";
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yin
new file mode 100644
index 00000000..d1208bd2
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-keystore@2016-10-31.yin
@@ -0,0 +1,596 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-keystore"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ks="urn:ietf:params:xml:ns:yang:ietf-keystore"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-keystore"/&gt;
+ &lt;prefix value="ks"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Mahesh Jethanandani
+ &amp;lt;mailto:mjethanandani@gmail.com&amp;gt;
+
+Editor: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module defines a keystore to centralize management of
+security credentials.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC VVVV; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2016-10-31"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC VVVV: NETCONF Server and RESTCONF Server Configuration
+ Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;identity name="key-algorithm"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity from which all key-algorithms are derived.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rsa"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The RSA algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC3447: Public-Key Cryptography Standards (PKCS) #1:
+ RSA Cryptography Specifications Version 2.1.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="secp192r1"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The secp192r1 algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="secp256r1"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The secp256r1 algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="secp384r1"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The secp384r1 algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="secp521r1"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The secp521r1 algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC5480:
+ Elliptic Curve Cryptography Subject Public Key Information.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;container name="keystore"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of private-keys and their associated certificates, as
+well as lists of trusted certificates for client certificate
+authentication. RPCs are provided to generate a new private
+key and to generate a certificate signing requests.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="private-keys"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of private key maintained by the keystore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="private-key"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A private key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the private key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="algorithm"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;/type&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The algorithm used by the private key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="key-length"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The key-length used by the private key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="public-key"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An OneAsymmetricKey 'publicKey' structure as specified
+by RFC 5958, Section 2 encoded using the ASN.1
+distinguished encoding rules (DER), as specified
+in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5958:
+ Asymmetric Key Packages
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;container name="certificate-chains"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Certificate chains associated with this private key.
+More than one chain per key is enabled to support,
+for instance, a TPM-protected key that has associated
+both IDevID and LDevID certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="certificate-chain"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A certificate chain for this public key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the certificate chain. The
+name must be a unique across all private keys, not
+just within this private key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="certificate"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An X.509 v3 certificate structure as specified by RFC
+5280, Section 4 encoded using the ASN.1 distinguished
+encoding rules (DER), as specified in ITU-T X.690.
+The list of certificates that run from the server
+certificate towards the trust anchor. The chain MAY
+include the trust anchor certificate itself.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5280:
+ Internet X.509 Public Key Infrastructure Certificate
+ and Certificate Revocation List (CRL) Profile.
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf-list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;action name="generate-certificate-signing-request"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generates a certificate signing request structure for
+the associated private key using the passed subject and
+attribute values. Please review both the Security
+Considerations and Design Considerations sections in
+RFC VVVV for more information regarding this action
+statement.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="subject"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'subject' field from the CertificationRequestInfo
+structure as specified by RFC 2986, Section 4.1 encoded
+using the ASN.1 distinguished encoding rules (DER), as
+specified in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="attributes"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'attributes' field from the CertificationRequestInfo
+structure as specified by RFC 2986, Section 4.1 encoded
+using the ASN.1 distinguished encoding rules (DER), as
+specified in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;leaf name="certificate-signing-request"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A CertificationRequest structure as specified by RFC
+2986, Section 4.1 encoded using the ASN.1 distinguished
+encoding rules (DER), as specified in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2986:
+ PKCS #10: Certification Request Syntax Specification
+ Version 1.7.
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/output&gt;
+ &lt;/action&gt;
+ &lt;/list&gt;
+ &lt;action name="generate-private-key"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Requests the device to generate a private key using the
+specified algorithm and key length.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name this private-key should have when listed
+in /keystore/private-keys. As such, the passed
+value must not match any existing 'name' value.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="algorithm"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="key-algorithm"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The algorithm to be used when generating the key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="key-length"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;For algorithms that need a key length specified
+when generating the key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/action&gt;
+ &lt;action name="load-private-key"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Requests the device to load a private key&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name this private-key should have when listed
+in /keystore/private-keys. As such, the passed
+value must not match any existing 'name' value.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="private-key"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An OneAsymmetricKey structure as specified by RFC
+5958, Section 2 encoded using the ASN.1 distinguished
+encoding rules (DER), as specified in ITU-T X.690.
+Note that this is the raw private with no shrouding
+to protect it. The strength of this private key
+MUST NOT be greater than the strength of the secure
+connection over which it is communicated. Devices
+SHOULD fail this request if ever that happens.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5958:
+ Asymmetric Key Packages
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/action&gt;
+ &lt;/container&gt;
+ &lt;list name="trusted-certificates"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of trusted certificates. These certificates
+can be used by a server to authenticate clients, or by clients
+to authenticate servers. The certificates may be endpoint
+specific or for certificate authorities (to authenticate many
+clients at once. Each list of certificates SHOULD be specific
+to a purpose, as the list as a whole may be referenced by other
+modules. For instance, a NETCONF server model might point to
+a list of certificates to use when authenticating client
+certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this list of trusted certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="description"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary description for this list of trusted
+certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="trusted-certificate"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A trusted certificate for a specific use. Note, this
+'certificate' is a list in order to encode any
+associated intermediate certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this trusted certificate. Must
+be unique across all lists of trusted certificates
+(not just this list) so that a leafref to it from
+another module can resolve to unique values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="certificate"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An X.509 v3 certificate structure as specified by RFC
+5280, Section 4 encoded using the ASN.1 distinguished
+encoding rules (DER), as specified in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5280:
+ Internet X.509 Public Key Infrastructure Certificate
+ and Certificate Revocation List (CRL) Profile.
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;list name="trusted-ssh-host-keys"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of trusted host-keys. These host-keys can be used
+by clients to authenticate SSH servers. The host-keys are
+endpoint specific. Each list of host-keys SHOULD be
+specific to a purpose, as the list as a whole may be
+referenced by other modules. For instance, a NETCONF
+client model might point to a list of host-keys to use
+when authenticating servers host-keys.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this list of trusted SSH host keys.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="description"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary description for this list of trusted SSH host
+keys.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="trusted-host-key"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A trusted host key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this trusted host-key. Must be
+unique across all lists of trusted host-keys (not just
+this list) so that a leafref to it from another module
+can resolve to unique values.
+
+Note that, for when the SSH client is able to listen
+for call-home connections as well, there is no reference
+identifier (e.g., hostname, IP address, etc.) that it
+can use to uniquely identify the server with. The
+call-home draft recommends SSH servers use X.509v3
+certificates (RFC6187) when calling home.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="host-key"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An OneAsymmetricKey 'publicKey' structure as specified
+by RFC 5958, Section 2 encoded using the ASN.1
+distinguished encoding rules (DER), as specified
+in ITU-T X.690.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5958:
+ Asymmetric Key Packages
+ITU-T X.690:
+ Information technology - ASN.1 encoding rules:
+ Specification of Basic Encoding Rules (BER),
+ Canonical Encoding Rules (CER) and Distinguished
+ Encoding Rules (DER).&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;container name="user-auth-credentials"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of user authentication credentials that can be used
+by an SSH client to log into an SSH server, using any of
+the supported authentication methods (e.g., password,
+public key, client certificate, etc.).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="user-auth-credential"&gt;
+ &lt;key value="username"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The authentication credentials for a specific user.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="username"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The username of this user. This will be the username
+used, for instance, to log into an SSH server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="auth-method"&gt;
+ &lt;key value="priority"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A method of authenticating as this user.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="priority"&gt;
+ &lt;type name="uint8"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;When multiple authentication methods in this list are
+supported by the server, the one with the lowest priority
+value will be the one that is used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="auth-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The authentication type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf-list name="certificate"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/keystore/private-keys/private-key/certificate-chains/certificate-chain/name"/&gt;
+ &lt;/type&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of references to certificates that can be used
+for user authentication. When multiple certificates
+in this list supported by the server, the one that
+comes before the others in the leaf-list will be
+used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf-list name="public-key"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/keystore/private-keys/private-key/name"/&gt;
+ &lt;/type&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of references to public keys that can be used
+for user authentication. When multiple public keys
+in this list supported by the server, the one that
+comes before the others in the leaf-list will be
+used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf name="ciphertext-password"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An ciphertext password. The method of encipherment
+and how that method can be determined from this
+string is implementation-specific.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="cleartext-password"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An cleartext password.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;notification name="certificate-expiration"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A notification indicating that a configured certificate is
+either about to expire or has already expired. When to send
+notifications is an implementation specific decision, but
+it is RECOMMENDED that a notification be sent once a month
+for 3 months, then once a week for four weeks, and then once
+a day thereafter.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="certificate"&gt;
+ &lt;type name="instance-identifier"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifies which certificate is expiring or is expired.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="expiration-date"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifies the expiration date on the certificate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yang
new file mode 100644
index 00000000..f466c426
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yang
@@ -0,0 +1,433 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf-acm {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm";
+ prefix nacm;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Bert Wijnen
+ &lt;mailto:bertietf@bwijnen.net&gt;
+
+ Editor: Andy Bierman
+ &lt;mailto:andy@yumaworks.com&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;";
+ description
+ "NETCONF Access Control Model.
+
+ Copyright (c) 2012 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6536; see
+ the RFC itself for full legal notices.";
+
+ revision 2012-02-22 {
+ description
+ "Initial version";
+ reference
+ "RFC 6536: Network Configuration Protocol (NETCONF)
+ Access Control Model";
+ }
+
+ extension default-deny-write {
+ description
+ "Used to indicate that the data model node
+ represents a sensitive security system parameter.
+
+ If present, and the NACM module is enabled (i.e.,
+ /nacm/enable-nacm object equals 'true'), the NETCONF server
+ will only allow the designated 'recovery session' to have
+ write access to the node. An explicit access control rule is
+ required for all other users.
+
+ The 'default-deny-write' extension MAY appear within a data
+ definition statement. It is ignored otherwise.";
+ }
+
+ extension default-deny-all {
+ description
+ "Used to indicate that the data model node
+ controls a very sensitive security system parameter.
+
+ If present, and the NACM module is enabled (i.e.,
+ /nacm/enable-nacm object equals 'true'), the NETCONF server
+ will only allow the designated 'recovery session' to have
+ read, write, or execute access to the node. An explicit
+ access control rule is required for all other users.
+
+ The 'default-deny-all' extension MAY appear within a data
+ definition statement, 'rpc' statement, or 'notification'
+ statement. It is ignored otherwise.";
+ }
+
+ typedef user-name-type {
+ type string {
+ length "1..max";
+ }
+ description
+ "General Purpose Username string.";
+ }
+
+ typedef matchall-string-type {
+ type string {
+ pattern "\\*";
+ }
+ description
+ "The string containing a single asterisk '*' is used
+ to conceptually represent all possible values
+ for the particular leaf using this data type.";
+ }
+
+ typedef access-operations-type {
+ type bits {
+ bit create {
+ description
+ "Any protocol operation that creates a
+ new data node.";
+ }
+ bit read {
+ description
+ "Any protocol operation or notification that
+ returns the value of a data node.";
+ }
+ bit update {
+ description
+ "Any protocol operation that alters an existing
+ data node.";
+ }
+ bit delete {
+ description
+ "Any protocol operation that removes a data node.";
+ }
+ bit exec {
+ description
+ "Execution access to the specified protocol operation.";
+ }
+ }
+ description
+ "NETCONF Access Operation.";
+ }
+
+ typedef group-name-type {
+ type string {
+ length "1..max";
+ pattern "[^\\*].*";
+ }
+ description
+ "Name of administrative group to which
+ users can be assigned.";
+ }
+
+ typedef action-type {
+ type enumeration {
+ enum "permit" {
+ description
+ "Requested action is permitted.";
+ }
+ enum "deny" {
+ description
+ "Requested action is denied.";
+ }
+ }
+ description
+ "Action taken by the server when a particular
+ rule matches.";
+ }
+
+ typedef node-instance-identifier {
+ type yang:xpath1.0;
+ description
+ "Path expression used to represent a special
+ data node instance identifier string.
+
+ A node-instance-identifier value is an
+ unrestricted YANG instance-identifier expression.
+ All the same rules as an instance-identifier apply
+ except predicates for keys are optional. If a key
+ predicate is missing, then the node-instance-identifier
+ represents all possible server instances for that key.
+
+ This XPath expression is evaluated in the following context:
+
+ o The set of namespace declarations are those in scope on
+ the leaf element where this type is used.
+
+ o The set of variable bindings contains one variable,
+ 'USER', which contains the name of the user of the current
+ session.
+
+ o The function library is the core function library, but
+ note that due to the syntax restrictions of an
+ instance-identifier, no functions are allowed.
+
+ o The context node is the root node in the data tree.";
+ }
+
+ container nacm {
+ nacm:default-deny-all;
+ description
+ "Parameters for NETCONF Access Control Model.";
+ leaf enable-nacm {
+ type boolean;
+ default "true";
+ description
+ "Enables or disables all NETCONF access control
+ enforcement. If 'true', then enforcement
+ is enabled. If 'false', then enforcement
+ is disabled.";
+ }
+
+ leaf read-default {
+ type action-type;
+ default "permit";
+ description
+ "Controls whether read access is granted if
+ no appropriate rule is found for a
+ particular read request.";
+ }
+
+ leaf write-default {
+ type action-type;
+ default "deny";
+ description
+ "Controls whether create, update, or delete access
+ is granted if no appropriate rule is found for a
+ particular write request.";
+ }
+
+ leaf exec-default {
+ type action-type;
+ default "permit";
+ description
+ "Controls whether exec access is granted if no appropriate
+ rule is found for a particular protocol operation request.";
+ }
+
+ leaf enable-external-groups {
+ type boolean;
+ default "true";
+ description
+ "Controls whether the server uses the groups reported by the
+ NETCONF transport layer when it assigns the user to a set of
+ NACM groups. If this leaf has the value 'false', any group
+ names reported by the transport layer are ignored by the
+ server.";
+ }
+
+ leaf denied-operations {
+ type yang:zero-based-counter32;
+ config false;
+ mandatory true;
+ description
+ "Number of times since the server last restarted that a
+ protocol operation request was denied.";
+ }
+
+ leaf denied-data-writes {
+ type yang:zero-based-counter32;
+ config false;
+ mandatory true;
+ description
+ "Number of times since the server last restarted that a
+ protocol operation request to alter
+ a configuration datastore was denied.";
+ }
+
+ leaf denied-notifications {
+ type yang:zero-based-counter32;
+ config false;
+ mandatory true;
+ description
+ "Number of times since the server last restarted that
+ a notification was dropped for a subscription because
+ access to the event type was denied.";
+ }
+
+ container groups {
+ description
+ "NETCONF Access Control Groups.";
+ list group {
+ key "name";
+ description
+ "One NACM Group Entry. This list will only contain
+ configured entries, not any entries learned from
+ any transport protocols.";
+ leaf name {
+ type group-name-type;
+ description
+ "Group name associated with this entry.";
+ }
+
+ leaf-list user-name {
+ type user-name-type;
+ description
+ "Each entry identifies the username of
+ a member of the group associated with
+ this entry.";
+ }
+ }
+ }
+
+ list rule-list {
+ key "name";
+ ordered-by user;
+ description
+ "An ordered collection of access control rules.";
+ leaf name {
+ type string {
+ length "1..max";
+ }
+ description
+ "Arbitrary name assigned to the rule-list.";
+ }
+
+ leaf-list group {
+ type union {
+ type matchall-string-type;
+ type group-name-type;
+ }
+ description
+ "List of administrative groups that will be
+ assigned the associated access rights
+ defined by the 'rule' list.
+
+ The string '*' indicates that all groups apply to the
+ entry.";
+ }
+
+ list rule {
+ key "name";
+ ordered-by user;
+ description
+ "One access control rule.
+
+ Rules are processed in user-defined order until a match is
+ found. A rule matches if 'module-name', 'rule-type', and
+ 'access-operations' match the request. If a rule
+ matches, the 'action' leaf determines if access is granted
+ or not.";
+ leaf name {
+ type string {
+ length "1..max";
+ }
+ description
+ "Arbitrary name assigned to the rule.";
+ }
+
+ leaf module-name {
+ type union {
+ type matchall-string-type;
+ type string;
+ }
+ default "*";
+ description
+ "Name of the module associated with this rule.
+
+ This leaf matches if it has the value '*' or if the
+ object being accessed is defined in the module with the
+ specified module name.";
+ }
+
+ choice rule-type {
+ description
+ "This choice matches if all leafs present in the rule
+ match the request. If no leafs are present, the
+ choice matches all requests.";
+ case protocol-operation {
+ leaf rpc-name {
+ type union {
+ type matchall-string-type;
+ type string;
+ }
+ description
+ "This leaf matches if it has the value '*' or if
+ its value equals the requested protocol operation
+ name.";
+ }
+ }
+
+ case notification {
+ leaf notification-name {
+ type union {
+ type matchall-string-type;
+ type string;
+ }
+ description
+ "This leaf matches if it has the value '*' or if its
+ value equals the requested notification name.";
+ }
+ }
+
+ case data-node {
+ leaf path {
+ type node-instance-identifier;
+ mandatory true;
+ description
+ "Data Node Instance Identifier associated with the
+ data node controlled by this rule.
+
+ Configuration data or state data instance
+ identifiers start with a top-level data node. A
+ complete instance identifier is required for this
+ type of path value.
+
+ The special value '/' refers to all possible
+ datastore contents.";
+ }
+ }
+ }
+
+ leaf access-operations {
+ type union {
+ type matchall-string-type;
+ type access-operations-type;
+ }
+ default "*";
+ description
+ "Access operations associated with this rule.
+
+ This leaf matches if it has the value '*' or if the
+ bit corresponding to the requested operation is set.";
+ }
+
+ leaf action {
+ type action-type;
+ mandatory true;
+ description
+ "The access control action associated with the
+ rule. If a rule is determined to match a
+ particular request, then this object is used
+ to determine whether to permit or deny the
+ request.";
+ }
+
+ leaf comment {
+ type string;
+ description
+ "A textual description of the access rule.";
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yin
new file mode 100644
index 00000000..b73ab4e1
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-acm@2012-02-22.yin
@@ -0,0 +1,452 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf-acm"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:nacm="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"/&gt;
+ &lt;prefix value="nacm"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Bert Wijnen
+ &amp;lt;mailto:bertietf@bwijnen.net&amp;gt;
+
+Editor: Andy Bierman
+ &amp;lt;mailto:andy@yumaworks.com&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Access Control Model.
+
+Copyright (c) 2012 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6536; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2012-02-22"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6536: Network Configuration Protocol (NETCONF)
+ Access Control Model&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;extension name="default-deny-write"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Used to indicate that the data model node
+represents a sensitive security system parameter.
+
+If present, and the NACM module is enabled (i.e.,
+/nacm/enable-nacm object equals 'true'), the NETCONF server
+will only allow the designated 'recovery session' to have
+write access to the node. An explicit access control rule is
+required for all other users.
+
+The 'default-deny-write' extension MAY appear within a data
+definition statement. It is ignored otherwise.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/extension&gt;
+ &lt;extension name="default-deny-all"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Used to indicate that the data model node
+controls a very sensitive security system parameter.
+
+If present, and the NACM module is enabled (i.e.,
+/nacm/enable-nacm object equals 'true'), the NETCONF server
+will only allow the designated 'recovery session' to have
+read, write, or execute access to the node. An explicit
+access control rule is required for all other users.
+
+The 'default-deny-all' extension MAY appear within a data
+definition statement, 'rpc' statement, or 'notification'
+statement. It is ignored otherwise.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/extension&gt;
+ &lt;typedef name="user-name-type"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;General Purpose Username string.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="matchall-string-type"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="\*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The string containing a single asterisk '*' is used
+to conceptually represent all possible values
+for the particular leaf using this data type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="access-operations-type"&gt;
+ &lt;type name="bits"&gt;
+ &lt;bit name="create"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Any protocol operation that creates a
+new data node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/bit&gt;
+ &lt;bit name="read"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Any protocol operation or notification that
+returns the value of a data node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/bit&gt;
+ &lt;bit name="update"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Any protocol operation that alters an existing
+data node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/bit&gt;
+ &lt;bit name="delete"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Any protocol operation that removes a data node.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/bit&gt;
+ &lt;bit name="exec"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Execution access to the specified protocol operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/bit&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Access Operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="group-name-type"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..max"/&gt;
+ &lt;pattern value="[^\*].*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Name of administrative group to which
+users can be assigned.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="action-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="permit"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Requested action is permitted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="deny"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Requested action is denied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Action taken by the server when a particular
+rule matches.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="node-instance-identifier"&gt;
+ &lt;type name="yang:xpath1.0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Path expression used to represent a special
+data node instance identifier string.
+
+A node-instance-identifier value is an
+unrestricted YANG instance-identifier expression.
+All the same rules as an instance-identifier apply
+except predicates for keys are optional. If a key
+predicate is missing, then the node-instance-identifier
+represents all possible server instances for that key.
+
+This XPath expression is evaluated in the following context:
+
+ o The set of namespace declarations are those in scope on
+ the leaf element where this type is used.
+
+ o The set of variable bindings contains one variable,
+ 'USER', which contains the name of the user of the current
+ session.
+
+ o The function library is the core function library, but
+ note that due to the syntax restrictions of an
+ instance-identifier, no functions are allowed.
+
+ o The context node is the root node in the data tree.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;container name="nacm"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for NETCONF Access Control Model.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="enable-nacm"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Enables or disables all NETCONF access control
+enforcement. If 'true', then enforcement
+is enabled. If 'false', then enforcement
+is disabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="read-default"&gt;
+ &lt;type name="action-type"/&gt;
+ &lt;default value="permit"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether read access is granted if
+no appropriate rule is found for a
+particular read request.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="write-default"&gt;
+ &lt;type name="action-type"/&gt;
+ &lt;default value="deny"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether create, update, or delete access
+is granted if no appropriate rule is found for a
+particular write request.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="exec-default"&gt;
+ &lt;type name="action-type"/&gt;
+ &lt;default value="permit"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether exec access is granted if no appropriate
+rule is found for a particular protocol operation request.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="enable-external-groups"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Controls whether the server uses the groups reported by the
+NETCONF transport layer when it assigns the user to a set of
+NACM groups. If this leaf has the value 'false', any group
+names reported by the transport layer are ignored by the
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="denied-operations"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of times since the server last restarted that a
+protocol operation request was denied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="denied-data-writes"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of times since the server last restarted that a
+protocol operation request to alter
+a configuration datastore was denied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="denied-notifications"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of times since the server last restarted that
+a notification was dropped for a subscription because
+access to the event type was denied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="groups"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Access Control Groups.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="group"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;One NACM Group Entry. This list will only contain
+configured entries, not any entries learned from
+any transport protocols.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="group-name-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Group name associated with this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="user-name"&gt;
+ &lt;type name="user-name-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Each entry identifies the username of
+a member of the group associated with
+this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;list name="rule-list"&gt;
+ &lt;key value="name"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An ordered collection of access control rules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Arbitrary name assigned to the rule-list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="group"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="matchall-string-type"/&gt;
+ &lt;type name="group-name-type"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of administrative groups that will be
+assigned the associated access rights
+defined by the 'rule' list.
+
+The string '*' indicates that all groups apply to the
+entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;list name="rule"&gt;
+ &lt;key value="name"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;One access control rule.
+
+Rules are processed in user-defined order until a match is
+found. A rule matches if 'module-name', 'rule-type', and
+'access-operations' match the request. If a rule
+matches, the 'action' leaf determines if access is granted
+or not.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Arbitrary name assigned to the rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="module-name"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="matchall-string-type"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;/type&gt;
+ &lt;default value="*"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Name of the module associated with this rule.
+
+This leaf matches if it has the value '*' or if the
+object being accessed is defined in the module with the
+specified module name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="rule-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This choice matches if all leafs present in the rule
+match the request. If no leafs are present, the
+choice matches all requests.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="protocol-operation"&gt;
+ &lt;leaf name="rpc-name"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="matchall-string-type"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This leaf matches if it has the value '*' or if
+its value equals the requested protocol operation
+name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/case&gt;
+ &lt;case name="notification"&gt;
+ &lt;leaf name="notification-name"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="matchall-string-type"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This leaf matches if it has the value '*' or if its
+value equals the requested notification name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/case&gt;
+ &lt;case name="data-node"&gt;
+ &lt;leaf name="path"&gt;
+ &lt;type name="node-instance-identifier"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data Node Instance Identifier associated with the
+data node controlled by this rule.
+
+Configuration data or state data instance
+identifiers start with a top-level data node. A
+complete instance identifier is required for this
+type of path value.
+
+The special value '/' refers to all possible
+datastore contents.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;leaf name="access-operations"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="matchall-string-type"/&gt;
+ &lt;type name="access-operations-type"/&gt;
+ &lt;/type&gt;
+ &lt;default value="*"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Access operations associated with this rule.
+
+This leaf matches if it has the value '*' or if the
+bit corresponding to the requested operation is set.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="action"&gt;
+ &lt;type name="action-type"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The access control action associated with the
+rule. If a rule is determined to match a
+particular request, then this object is used
+to determine whether to permit or deny the
+request.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="comment"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A textual description of the access rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yang
new file mode 100644
index 00000000..bd4f63b5
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yang
@@ -0,0 +1,570 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf-monitoring {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
+ prefix ncm;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Bert Wijnen
+ &lt;mailto:bertietf@bwijnen.net&gt;
+
+ Editor: Mark Scott
+ &lt;mailto:mark.scott@ericsson.com&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;";
+ description
+ "NETCONF Monitoring Module.
+ All elements in this module are read-only.
+
+ Copyright (c) 2010 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6022; see
+ the RFC itself for full legal notices.";
+
+ revision 2010-10-04 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 6022: YANG Module for NETCONF Monitoring";
+ }
+
+ identity transport {
+ description
+ "Base identity for NETCONF transport types.";
+ }
+
+ identity netconf-ssh {
+ base transport;
+ description
+ "NETCONF over Secure Shell (SSH).";
+ reference
+ "RFC 4742: Using the NETCONF Configuration Protocol
+ over Secure SHell (SSH)";
+ }
+
+ identity netconf-soap-over-beep {
+ base transport;
+ description
+ "NETCONF over Simple Object Access Protocol (SOAP) over
+ Blocks Extensible Exchange Protocol (BEEP).";
+ reference
+ "RFC 4743: Using NETCONF over the Simple Object
+ Access Protocol (SOAP)";
+ }
+
+ identity netconf-soap-over-https {
+ base transport;
+ description
+ "NETCONF over Simple Object Access Protocol (SOAP)
+ over Hypertext Transfer Protocol Secure (HTTPS).";
+ reference
+ "RFC 4743: Using NETCONF over the Simple Object
+ Access Protocol (SOAP)";
+ }
+
+ identity netconf-beep {
+ base transport;
+ description
+ "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
+ reference
+ "RFC 4744: Using the NETCONF Protocol over the
+ Blocks Extensible Exchange Protocol (BEEP)";
+ }
+
+ identity netconf-tls {
+ base transport;
+ description
+ "NETCONF over Transport Layer Security (TLS).";
+ reference
+ "RFC 5539: NETCONF over Transport Layer Security (TLS)";
+ }
+
+ identity schema-format {
+ description
+ "Base identity for data model schema languages.";
+ }
+
+ identity xsd {
+ base schema-format;
+ description
+ "W3C XML Schema Definition.";
+ reference
+ "W3C REC REC-xmlschema-1-20041028:
+ XML Schema Part 1: Structures";
+ }
+
+ identity yang {
+ base schema-format;
+ description
+ "The YANG data modeling language for NETCONF.";
+ reference
+ "RFC 6020: YANG - A Data Modeling Language for the
+ Network Configuration Protocol (NETCONF)";
+ }
+
+ identity yin {
+ base schema-format;
+ description
+ "The YIN syntax for YANG.";
+ reference
+ "RFC 6020: YANG - A Data Modeling Language for the
+ Network Configuration Protocol (NETCONF)";
+ }
+
+ identity rng {
+ base schema-format;
+ description
+ "Regular Language for XML Next Generation (RELAX NG).";
+ reference
+ "ISO/IEC 19757-2:2008: RELAX NG";
+ }
+
+ identity rnc {
+ base schema-format;
+ description
+ "Relax NG Compact Syntax";
+ reference
+ "ISO/IEC 19757-2:2008: RELAX NG";
+ }
+
+ typedef netconf-datastore-type {
+ type enumeration {
+ enum "running";
+ enum "candidate";
+ enum "startup";
+ }
+ description
+ "Enumeration of possible NETCONF datastore types.";
+ reference
+ "RFC 4741: NETCONF Configuration Protocol";
+ }
+
+ grouping common-counters {
+ description
+ "Counters that exist both per session, and also globally,
+ accumulated from all sessions.";
+ leaf in-rpcs {
+ type yang:zero-based-counter32;
+ description
+ "Number of correct &lt;rpc&gt; messages received.";
+ }
+
+ leaf in-bad-rpcs {
+ type yang:zero-based-counter32;
+ description
+ "Number of messages received when an &lt;rpc&gt; message was expected,
+ that were not correct &lt;rpc&gt; messages. This includes XML parse
+ errors and errors on the rpc layer.";
+ }
+
+ leaf out-rpc-errors {
+ type yang:zero-based-counter32;
+ description
+ "Number of &lt;rpc-reply&gt; messages sent that contained an
+ &lt;rpc-error&gt; element.";
+ }
+
+ leaf out-notifications {
+ type yang:zero-based-counter32;
+ description
+ "Number of &lt;notification&gt; messages sent.";
+ }
+ }
+
+ container netconf-state {
+ config false;
+ description
+ "The netconf-state container is the root of the monitoring
+ data model.";
+ container capabilities {
+ description
+ "Contains the list of NETCONF capabilities supported by the
+ server.";
+ leaf-list capability {
+ type inet:uri;
+ description
+ "List of NETCONF capabilities supported by the server.";
+ }
+ }
+
+ container datastores {
+ description
+ "Contains the list of NETCONF configuration datastores.";
+ list datastore {
+ key "name";
+ description
+ "List of NETCONF configuration datastores supported by
+ the NETCONF server and related information.";
+ leaf name {
+ type netconf-datastore-type;
+ description
+ "Name of the datastore associated with this list entry.";
+ }
+
+ container locks {
+ presence "This container is present only if the datastore
+ is locked.";
+ description
+ "The NETCONF &lt;lock&gt; and &lt;partial-lock&gt; operations allow
+ a client to lock specific resources in a datastore. The
+ NETCONF server will prevent changes to the locked
+ resources by all sessions except the one that acquired
+ the lock(s).
+
+ Monitoring information is provided for each datastore
+ entry including details such as the session that acquired
+ the lock, the type of lock (global or partial) and the
+ list of locked resources. Multiple locks per datastore
+ are supported.";
+ grouping lock-info {
+ description
+ "Lock related parameters, common to both global and
+ partial locks.";
+ leaf locked-by-session {
+ type uint32;
+ mandatory true;
+ description
+ "The session ID of the session that has locked
+ this resource. Both a global lock and a partial
+ lock MUST contain the NETCONF session-id.
+
+ If the lock is held by a session that is not managed
+ by the NETCONF server (e.g., a CLI session), a session
+ id of 0 (zero) is reported.";
+ reference
+ "RFC 4741: NETCONF Configuration Protocol";
+ }
+
+ leaf locked-time {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "The date and time of when the resource was
+ locked.";
+ }
+ }
+
+ choice lock-type {
+ description
+ "Indicates if a global lock or a set of partial locks
+ are set.";
+ container global-lock {
+ description
+ "Present if the global lock is set.";
+ uses lock-info;
+ }
+
+ list partial-lock {
+ key "lock-id";
+ description
+ "List of partial locks.";
+ reference
+ "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
+ NETCONF";
+ leaf lock-id {
+ type uint32;
+ description
+ "This is the lock id returned in the &lt;partial-lock&gt;
+ response.";
+ }
+
+ uses lock-info;
+
+ leaf-list select {
+ type yang:xpath1.0;
+ min-elements 1;
+ description
+ "The xpath expression that was used to request
+ the lock. The select expression indicates the
+ original intended scope of the lock.";
+ }
+
+ leaf-list locked-node {
+ type instance-identifier;
+ description
+ "The list of instance-identifiers (i.e., the
+ locked nodes).
+
+ The scope of the partial lock is defined by the list
+ of locked nodes.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ container schemas {
+ description
+ "Contains the list of data model schemas supported by the
+ server.";
+ list schema {
+ key "identifier version format";
+ description
+ "List of data model schemas supported by the server.";
+ leaf identifier {
+ type string;
+ description
+ "Identifier to uniquely reference the schema. The
+ identifier is used in the &lt;get-schema&gt; operation and may
+ be used for other purposes such as file retrieval.
+
+ For modeling languages that support or require a data
+ model name (e.g., YANG module name) the identifier MUST
+ match that name. For YANG data models, the identifier is
+ the name of the module or submodule. In other cases, an
+ identifier such as a filename MAY be used instead.";
+ }
+
+ leaf version {
+ type string;
+ description
+ "Version of the schema supported. Multiple versions MAY be
+ supported simultaneously by a NETCONF server. Each
+ version MUST be reported individually in the schema list,
+ i.e., with same identifier, possibly different location,
+ but different version.
+
+ For YANG data models, version is the value of the most
+ recent YANG 'revision' statement in the module or
+ submodule, or the empty string if no 'revision' statement
+ is present.";
+ }
+
+ leaf format {
+ type identityref {
+ base schema-format;
+ }
+ description
+ "The data modeling language the schema is written
+ in (currently xsd, yang, yin, rng, or rnc).
+ For YANG data models, 'yang' format MUST be supported and
+ 'yin' format MAY also be provided.";
+ }
+
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ description
+ "The XML namespace defined by the data model.
+
+ For YANG data models, this is the module's namespace.
+ If the list entry describes a submodule, this field
+ contains the namespace of the module to which the
+ submodule belongs.";
+ }
+
+ leaf-list location {
+ type union {
+ type enumeration {
+ enum "NETCONF";
+ }
+ type inet:uri;
+ }
+ description
+ "One or more locations from which the schema can be
+ retrieved. This list SHOULD contain at least one
+ entry per schema.
+
+ A schema entry may be located on a remote file system
+ (e.g., reference to file system for ftp retrieval) or
+ retrieved directly from a server supporting the
+ &lt;get-schema&gt; operation (denoted by the value 'NETCONF').";
+ }
+ }
+ }
+
+ container sessions {
+ description
+ "The sessions container includes session-specific data for
+ NETCONF management sessions. The session list MUST include
+ all currently active NETCONF sessions.";
+ list session {
+ key "session-id";
+ description
+ "All NETCONF sessions managed by the NETCONF server
+ MUST be reported in this list.";
+ leaf session-id {
+ type uint32 {
+ range "1..max";
+ }
+ description
+ "Unique identifier for the session. This value is the
+ NETCONF session identifier, as defined in RFC 4741.";
+ reference
+ "RFC 4741: NETCONF Configuration Protocol";
+ }
+
+ leaf transport {
+ type identityref {
+ base transport;
+ }
+ mandatory true;
+ description
+ "Identifies the transport for each session, e.g.,
+ 'netconf-ssh', 'netconf-soap', etc.";
+ }
+
+ leaf username {
+ type string;
+ mandatory true;
+ description
+ "The username is the client identity that was authenticated
+ by the NETCONF transport protocol. The algorithm used to
+ derive the username is NETCONF transport protocol specific
+ and in addition specific to the authentication mechanism
+ used by the NETCONF transport protocol.";
+ }
+
+ leaf source-host {
+ type inet:host;
+ description
+ "Host identifier of the NETCONF client. The value
+ returned is implementation specific (e.g., hostname,
+ IPv4 address, IPv6 address)";
+ }
+
+ leaf login-time {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "Time at the server at which the session was established.";
+ }
+
+ uses common-counters {
+ description
+ "Per-session counters. Zero based with following reset
+ behaviour:
+ - at start of a session
+ - when max value is reached";
+ }
+ }
+ }
+
+ container statistics {
+ description
+ "Statistical data pertaining to the NETCONF server.";
+ leaf netconf-start-time {
+ type yang:date-and-time;
+ description
+ "Date and time at which the management subsystem was
+ started.";
+ }
+
+ leaf in-bad-hellos {
+ type yang:zero-based-counter32;
+ description
+ "Number of sessions silently dropped because an
+ invalid &lt;hello&gt; message was received. This includes &lt;hello&gt;
+ messages with a 'session-id' attribute, bad namespace, and
+ bad capability declarations.";
+ }
+
+ leaf in-sessions {
+ type yang:zero-based-counter32;
+ description
+ "Number of sessions started. This counter is incremented
+ when a &lt;hello&gt; message with a &lt;session-id&gt; is sent.
+
+ 'in-sessions' - 'in-bad-hellos' =
+ 'number of correctly started netconf sessions'";
+ }
+
+ leaf dropped-sessions {
+ type yang:zero-based-counter32;
+ description
+ "Number of sessions that were abnormally terminated, e.g.,
+ due to idle timeout or transport close. This counter is not
+ incremented when a session is properly closed by a
+ &lt;close-session&gt; operation, or killed by a &lt;kill-session&gt;
+ operation.";
+ }
+
+ uses common-counters {
+ description
+ "Global counters, accumulated from all sessions.
+ Zero based with following reset behaviour:
+ - re-initialization of NETCONF server
+ - when max value is reached";
+ }
+ }
+ }
+
+ rpc get-schema {
+ description
+ "This operation is used to retrieve a schema from the
+ NETCONF server.
+
+ Positive Response:
+ The NETCONF server returns the requested schema.
+
+ Negative Response:
+ If requested schema does not exist, the &lt;error-tag&gt; is
+ 'invalid-value'.
+
+ If more than one schema matches the requested parameters, the
+ &lt;error-tag&gt; is 'operation-failed', and &lt;error-app-tag&gt; is
+ 'data-not-unique'.";
+ input {
+ leaf identifier {
+ type string;
+ mandatory true;
+ description
+ "Identifier for the schema list entry.";
+ }
+
+ leaf version {
+ type string;
+ description
+ "Version of the schema requested. If this parameter is not
+ present, and more than one version of the schema exists on
+ the server, a 'data-not-unique' error is returned, as
+ described above.";
+ }
+
+ leaf format {
+ type identityref {
+ base schema-format;
+ }
+ description
+ "The data modeling language of the schema. If this
+ parameter is not present, and more than one formats of
+ the schema exists on the server, a 'data-not-unique' error
+ is returned, as described above.";
+ }
+ }
+
+ output {
+ anyxml data {
+ description
+ "Contains the schema content.";
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yin
new file mode 100644
index 00000000..2d2c1298
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-monitoring@2010-10-04.yin
@@ -0,0 +1,604 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf-monitoring"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ncm="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"/&gt;
+ &lt;prefix value="ncm"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Bert Wijnen
+ &amp;lt;mailto:bertietf@bwijnen.net&amp;gt;
+
+Editor: Mark Scott
+ &amp;lt;mailto:mark.scott@ericsson.com&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Monitoring Module.
+All elements in this module are read-only.
+
+Copyright (c) 2010 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6022; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2010-10-04"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6022: YANG Module for NETCONF Monitoring&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;identity name="transport"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity for NETCONF transport types.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="netconf-ssh"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF over Secure Shell (SSH).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4742: Using the NETCONF Configuration Protocol
+ over Secure SHell (SSH)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="netconf-soap-over-beep"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF over Simple Object Access Protocol (SOAP) over
+Blocks Extensible Exchange Protocol (BEEP).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4743: Using NETCONF over the Simple Object
+ Access Protocol (SOAP)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="netconf-soap-over-https"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF over Simple Object Access Protocol (SOAP)
+over Hypertext Transfer Protocol Secure (HTTPS).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4743: Using NETCONF over the Simple Object
+ Access Protocol (SOAP)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="netconf-beep"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF over Blocks Extensible Exchange Protocol (BEEP).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4744: Using the NETCONF Protocol over the
+ Blocks Extensible Exchange Protocol (BEEP)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="netconf-tls"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF over Transport Layer Security (TLS).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5539: NETCONF over Transport Layer Security (TLS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="schema-format"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity for data model schema languages.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="xsd"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;W3C XML Schema Definition.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;W3C REC REC-xmlschema-1-20041028:
+ XML Schema Part 1: Structures&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="yang"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG data modeling language for NETCONF.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6020: YANG - A Data Modeling Language for the
+ Network Configuration Protocol (NETCONF)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="yin"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YIN syntax for YANG.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6020: YANG - A Data Modeling Language for the
+ Network Configuration Protocol (NETCONF)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rng"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Regular Language for XML Next Generation (RELAX NG).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;ISO/IEC 19757-2:2008: RELAX NG&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="rnc"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Relax NG Compact Syntax&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;ISO/IEC 19757-2:2008: RELAX NG&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;typedef name="netconf-datastore-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="running"/&gt;
+ &lt;enum name="candidate"/&gt;
+ &lt;enum name="startup"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Enumeration of possible NETCONF datastore types.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4741: NETCONF Configuration Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="common-counters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Counters that exist both per session, and also globally,
+accumulated from all sessions.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="in-rpcs"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of correct &amp;lt;rpc&amp;gt; messages received.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-bad-rpcs"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of messages received when an &amp;lt;rpc&amp;gt; message was expected,
+that were not correct &amp;lt;rpc&amp;gt; messages. This includes XML parse
+errors and errors on the rpc layer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-rpc-errors"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of &amp;lt;rpc-reply&amp;gt; messages sent that contained an
+&amp;lt;rpc-error&amp;gt; element.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="out-notifications"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of &amp;lt;notification&amp;gt; messages sent.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;container name="netconf-state"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The netconf-state container is the root of the monitoring
+data model.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="capabilities"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the list of NETCONF capabilities supported by the
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf-list name="capability"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of NETCONF capabilities supported by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/container&gt;
+ &lt;container name="datastores"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the list of NETCONF configuration datastores.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="datastore"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of NETCONF configuration datastores supported by
+the NETCONF server and related information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="netconf-datastore-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Name of the datastore associated with this list entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="locks"&gt;
+ &lt;presence value="This container is present only if the datastore
+is locked."/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The NETCONF &amp;lt;lock&amp;gt; and &amp;lt;partial-lock&amp;gt; operations allow
+a client to lock specific resources in a datastore. The
+NETCONF server will prevent changes to the locked
+resources by all sessions except the one that acquired
+the lock(s).
+
+Monitoring information is provided for each datastore
+entry including details such as the session that acquired
+the lock, the type of lock (global or partial) and the
+list of locked resources. Multiple locks per datastore
+are supported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;grouping name="lock-info"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Lock related parameters, common to both global and
+partial locks.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="locked-by-session"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session ID of the session that has locked
+this resource. Both a global lock and a partial
+lock MUST contain the NETCONF session-id.
+
+If the lock is held by a session that is not managed
+by the NETCONF server (e.g., a CLI session), a session
+id of 0 (zero) is reported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4741: NETCONF Configuration Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="locked-time"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The date and time of when the resource was
+locked.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;choice name="lock-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates if a global lock or a set of partial locks
+are set.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="global-lock"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Present if the global lock is set.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="lock-info"/&gt;
+ &lt;/container&gt;
+ &lt;list name="partial-lock"&gt;
+ &lt;key value="lock-id"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of partial locks.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5717: Partial Lock Remote Procedure Call (RPC) for
+ NETCONF&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="lock-id"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This is the lock id returned in the &amp;lt;partial-lock&amp;gt;
+response.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="lock-info"/&gt;
+ &lt;leaf-list name="select"&gt;
+ &lt;type name="yang:xpath1.0"/&gt;
+ &lt;min-elements value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The xpath expression that was used to request
+the lock. The select expression indicates the
+original intended scope of the lock.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf-list name="locked-node"&gt;
+ &lt;type name="instance-identifier"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of instance-identifiers (i.e., the
+locked nodes).
+
+The scope of the partial lock is defined by the list
+of locked nodes.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/list&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="schemas"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the list of data model schemas supported by the
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="schema"&gt;
+ &lt;key value="identifier version format"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of data model schemas supported by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="identifier"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifier to uniquely reference the schema. The
+identifier is used in the &amp;lt;get-schema&amp;gt; operation and may
+be used for other purposes such as file retrieval.
+
+For modeling languages that support or require a data
+model name (e.g., YANG module name) the identifier MUST
+match that name. For YANG data models, the identifier is
+the name of the module or submodule. In other cases, an
+identifier such as a filename MAY be used instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="version"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Version of the schema supported. Multiple versions MAY be
+supported simultaneously by a NETCONF server. Each
+version MUST be reported individually in the schema list,
+i.e., with same identifier, possibly different location,
+but different version.
+
+For YANG data models, version is the value of the most
+recent YANG 'revision' statement in the module or
+submodule, or the empty string if no 'revision' statement
+is present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="format"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The data modeling language the schema is written
+in (currently xsd, yang, yin, rng, or rnc).
+For YANG data models, 'yang' format MUST be supported and
+'yin' format MAY also be provided.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="namespace"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The XML namespace defined by the data model.
+
+For YANG data models, this is the module's namespace.
+If the list entry describes a submodule, this field
+contains the namespace of the module to which the
+submodule belongs.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="location"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="NETCONF"/&gt;
+ &lt;/type&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;One or more locations from which the schema can be
+retrieved. This list SHOULD contain at least one
+entry per schema.
+
+A schema entry may be located on a remote file system
+(e.g., reference to file system for ftp retrieval) or
+retrieved directly from a server supporting the
+&amp;lt;get-schema&amp;gt; operation (denoted by the value 'NETCONF').&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="sessions"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The sessions container includes session-specific data for
+NETCONF management sessions. The session list MUST include
+all currently active NETCONF sessions.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="session"&gt;
+ &lt;key value="session-id"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;All NETCONF sessions managed by the NETCONF server
+MUST be reported in this list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="session-id"&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Unique identifier for the session. This value is the
+NETCONF session identifier, as defined in RFC 4741.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4741: NETCONF Configuration Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="transport"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="transport"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifies the transport for each session, e.g.,
+'netconf-ssh', 'netconf-soap', etc.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="username"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The username is the client identity that was authenticated
+by the NETCONF transport protocol. The algorithm used to
+derive the username is NETCONF transport protocol specific
+and in addition specific to the authentication mechanism
+used by the NETCONF transport protocol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="source-host"&gt;
+ &lt;type name="inet:host"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Host identifier of the NETCONF client. The value
+returned is implementation specific (e.g., hostname,
+IPv4 address, IPv6 address)&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="login-time"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Time at the server at which the session was established.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="common-counters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Per-session counters. Zero based with following reset
+behaviour:
+ - at start of a session
+ - when max value is reached&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/uses&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="statistics"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Statistical data pertaining to the NETCONF server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="netconf-start-time"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Date and time at which the management subsystem was
+started.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-bad-hellos"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of sessions silently dropped because an
+invalid &amp;lt;hello&amp;gt; message was received. This includes &amp;lt;hello&amp;gt;
+messages with a 'session-id' attribute, bad namespace, and
+bad capability declarations.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="in-sessions"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of sessions started. This counter is incremented
+when a &amp;lt;hello&amp;gt; message with a &amp;lt;session-id&amp;gt; is sent.
+
+'in-sessions' - 'in-bad-hellos' =
+ 'number of correctly started netconf sessions'&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="dropped-sessions"&gt;
+ &lt;type name="yang:zero-based-counter32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Number of sessions that were abnormally terminated, e.g.,
+due to idle timeout or transport close. This counter is not
+incremented when a session is properly closed by a
+&amp;lt;close-session&amp;gt; operation, or killed by a &amp;lt;kill-session&amp;gt;
+operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="common-counters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Global counters, accumulated from all sessions.
+Zero based with following reset behaviour:
+ - re-initialization of NETCONF server
+ - when max value is reached&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/uses&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;rpc name="get-schema"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This operation is used to retrieve a schema from the
+NETCONF server.
+
+Positive Response:
+ The NETCONF server returns the requested schema.
+
+Negative Response:
+ If requested schema does not exist, the &amp;lt;error-tag&amp;gt; is
+ 'invalid-value'.
+
+ If more than one schema matches the requested parameters, the
+ &amp;lt;error-tag&amp;gt; is 'operation-failed', and &amp;lt;error-app-tag&amp;gt; is
+ 'data-not-unique'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="identifier"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifier for the schema list entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="version"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Version of the schema requested. If this parameter is not
+present, and more than one version of the schema exists on
+the server, a 'data-not-unique' error is returned, as
+described above.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="format"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="schema-format"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The data modeling language of the schema. If this
+parameter is not present, and more than one formats of
+the schema exists on the server, a 'data-not-unique' error
+is returned, as described above.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;anyxml name="data"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the schema content.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/output&gt;
+ &lt;/rpc&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yang
new file mode 100644
index 00000000..a8711738
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yang
@@ -0,0 +1,323 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf-notifications {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-notifications";
+ prefix ncn;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-netconf {
+ prefix nc;
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration Protocol) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+ WG Chair: Bert Wijnen
+ &lt;mailto:bertietf@bwijnen.net&gt;
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+ Editor: Andy Bierman
+ &lt;mailto:andy@netconfcentral.org&gt;";
+ description
+ "This module defines a YANG data model for use with the
+ NETCONF protocol that allows the NETCONF client to
+ receive common NETCONF base event notifications.
+ Copyright (c) 2012 IETF Trust and the persons identified as
+ the document authors. All rights reserved.
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC 6470; see
+ the RFC itself for full legal notices.";
+
+ revision 2012-02-06 {
+ description
+ "Initial version.";
+ reference
+ "RFC 6470: NETCONF Base Notifications";
+ }
+
+ grouping common-session-parms {
+ description
+ "Common session parameters to identify a
+ management session.";
+ leaf username {
+ type string;
+ mandatory true;
+ description
+ "Name of the user for the session.";
+ }
+
+ leaf session-id {
+ type nc:session-id-or-zero-type;
+ mandatory true;
+ description
+ "Identifier of the session.
+ A NETCONF session MUST be identified by a non-zero value.
+ A non-NETCONF session MAY be identified by the value zero.";
+ }
+
+ leaf source-host {
+ type inet:ip-address;
+ description
+ "Address of the remote host for the session.";
+ }
+ }
+
+ grouping changed-by-parms {
+ description
+ "Common parameters to identify the source
+ of a change event, such as a configuration
+ or capability change.";
+ container changed-by {
+ description
+ "Indicates the source of the change.
+ If caused by internal action, then the
+ empty leaf 'server' will be present.
+ If caused by a management session, then
+ the name, remote host address, and session ID
+ of the session that made the change will be reported.";
+ choice server-or-user {
+ mandatory true;
+ leaf server {
+ type empty;
+ description
+ "If present, the change was caused
+ by the server.";
+ }
+
+ case by-user {
+ uses common-session-parms;
+ }
+ }
+ }
+ }
+
+ notification netconf-config-change {
+ description
+ "Generated when the NETCONF server detects that the
+ &lt;running&gt; or &lt;startup&gt; configuration datastore
+ has been changed by a management session.
+ The notification summarizes the edits that
+ have been detected.
+ The server MAY choose to also generate this
+ notification while loading a datastore during the
+ boot process for the device.";
+ uses changed-by-parms;
+
+ leaf datastore {
+ type enumeration {
+ enum "running" {
+ description
+ "The &lt;running&gt; datastore has changed.";
+ }
+ enum "startup" {
+ description
+ "The &lt;startup&gt; datastore has changed";
+ }
+ }
+ default "running";
+ description
+ "Indicates which configuration datastore has changed.";
+ }
+
+ list edit {
+ description
+ "An edit record SHOULD be present for each distinct
+ edit operation that the server has detected on
+ the target datastore. This list MAY be omitted
+ if the detailed edit operations are not known.
+ The server MAY report entries in this list for
+ changes not made by a NETCONF session (e.g., CLI).";
+ leaf target {
+ type instance-identifier;
+ description
+ "Topmost node associated with the configuration change.
+ A server SHOULD set this object to the node within
+ the datastore that is being altered. A server MAY
+ set this object to one of the ancestors of the actual
+ node that was changed, or omit this object, if the
+ exact node is not known.";
+ }
+
+ leaf operation {
+ type nc:edit-operation-type;
+ description
+ "Type of edit operation performed.
+ A server MUST set this object to the NETCONF edit
+ operation performed on the target datastore.";
+ }
+ }
+ }
+
+ notification netconf-capability-change {
+ description
+ "Generated when the NETCONF server detects that
+ the server capabilities have changed.
+ Indicates which capabilities have been added, deleted,
+ and/or modified. The manner in which a server
+ capability is changed is outside the scope of this
+ document.";
+ uses changed-by-parms;
+
+ leaf-list added-capability {
+ type inet:uri;
+ description
+ "List of capabilities that have just been added.";
+ }
+
+ leaf-list deleted-capability {
+ type inet:uri;
+ description
+ "List of capabilities that have just been deleted.";
+ }
+
+ leaf-list modified-capability {
+ type inet:uri;
+ description
+ "List of capabilities that have just been modified.
+ A capability is considered to be modified if the
+ base URI for the capability has not changed, but
+ one or more of the parameters encoded at the end of
+ the capability URI have changed.
+ The new modified value of the complete URI is returned.";
+ }
+ }
+
+ notification netconf-session-start {
+ description
+ "Generated when a NETCONF server detects that a
+ NETCONF session has started. A server MAY generate
+ this event for non-NETCONF management sessions.
+ Indicates the identity of the user that started
+ the session.";
+ uses common-session-parms;
+ }
+
+ notification netconf-session-end {
+ description
+ "Generated when a NETCONF server detects that a
+ NETCONF session has terminated.
+ A server MAY optionally generate this event for
+ non-NETCONF management sessions. Indicates the
+ identity of the user that owned the session,
+ and why the session was terminated.";
+ uses common-session-parms;
+
+ leaf killed-by {
+ when "../termination-reason = 'killed'";
+ type nc:session-id-type;
+ description
+ "The ID of the session that directly caused this session
+ to be abnormally terminated. If this session was abnormally
+ terminated by a non-NETCONF session unknown to the server,
+ then this leaf will not be present.";
+ }
+
+ leaf termination-reason {
+ type enumeration {
+ enum "closed" {
+ description
+ "The session was terminated by the client in normal
+ fashion, e.g., by the NETCONF &lt;close-session&gt;
+ protocol operation.";
+ }
+ enum "killed" {
+ description
+ "The session was terminated in abnormal
+ fashion, e.g., by the NETCONF &lt;kill-session&gt;
+ protocol operation.";
+ }
+ enum "dropped" {
+ description
+ "The session was terminated because the transport layer
+ connection was unexpectedly closed.";
+ }
+ enum "timeout" {
+ description
+ "The session was terminated because of inactivity,
+ e.g., waiting for the &lt;hello&gt; message or &lt;rpc&gt;
+ messages.";
+ }
+ enum "bad-hello" {
+ description
+ "The client's &lt;hello&gt; message was invalid.";
+ }
+ enum "other" {
+ description
+ "The session was terminated for some other reason.";
+ }
+ }
+ mandatory true;
+ description
+ "Reason the session was terminated.";
+ }
+ }
+
+ notification netconf-confirmed-commit {
+ description
+ "Generated when a NETCONF server detects that a
+ confirmed-commit event has occurred. Indicates the event
+ and the current state of the confirmed-commit procedure
+ in progress.";
+ reference
+ "RFC 6241, Section 8.4";
+ uses common-session-parms {
+ when "confirm-event != 'timeout'";
+ }
+
+ leaf confirm-event {
+ type enumeration {
+ enum "start" {
+ description
+ "The confirmed-commit procedure has started.";
+ }
+ enum "cancel" {
+ description
+ "The confirmed-commit procedure has been canceled,
+ e.g., due to the session being terminated, or an
+ explicit &lt;cancel-commit&gt; operation.";
+ }
+ enum "timeout" {
+ description
+ "The confirmed-commit procedure has been canceled
+ due to the confirm-timeout interval expiring.
+ The common session parameters will not be present
+ in this sub-mode.";
+ }
+ enum "extend" {
+ description
+ "The confirmed-commit timeout has been extended,
+ e.g., by a new &lt;confirmed-commit&gt; operation.";
+ }
+ enum "complete" {
+ description
+ "The confirmed-commit procedure has been completed.";
+ }
+ }
+ mandatory true;
+ description
+ "Indicates the event that caused the notification.";
+ }
+
+ leaf timeout {
+ when "../confirm-event = 'start' or ../confirm-event = 'extend'";
+ type uint32;
+ units "seconds";
+ description
+ "The configured timeout value if the event type
+ is 'start' or 'extend'. This value represents
+ the approximate number of seconds from the event
+ time when the 'timeout' event might occur.";
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yin
new file mode 100644
index 00000000..c703b306
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-notifications@2012-02-06.yin
@@ -0,0 +1,346 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf-notifications"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ncn="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"/&gt;
+ &lt;prefix value="ncn"/&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-netconf"&gt;
+ &lt;prefix value="nc"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration Protocol) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+WG Chair: Bert Wijnen
+ &amp;lt;mailto:bertietf@bwijnen.net&amp;gt;
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+Editor: Andy Bierman
+ &amp;lt;mailto:andy@netconfcentral.org&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module defines a YANG data model for use with the
+NETCONF protocol that allows the NETCONF client to
+receive common NETCONF base event notifications.
+Copyright (c) 2012 IETF Trust and the persons identified as
+the document authors. All rights reserved.
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+This version of this YANG module is part of RFC 6470; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2012-02-06"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6470: NETCONF Base Notifications&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;grouping name="common-session-parms"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Common session parameters to identify a
+management session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="username"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Name of the user for the session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="session-id"&gt;
+ &lt;type name="nc:session-id-or-zero-type"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Identifier of the session.
+A NETCONF session MUST be identified by a non-zero value.
+A non-NETCONF session MAY be identified by the value zero.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="source-host"&gt;
+ &lt;type name="inet:ip-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Address of the remote host for the session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="changed-by-parms"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Common parameters to identify the source
+of a change event, such as a configuration
+or capability change.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="changed-by"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates the source of the change.
+If caused by internal action, then the
+empty leaf 'server' will be present.
+If caused by a management session, then
+the name, remote host address, and session ID
+of the session that made the change will be reported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="server-or-user"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;leaf name="server"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;If present, the change was caused
+by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;case name="by-user"&gt;
+ &lt;uses name="common-session-parms"/&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;notification name="netconf-config-change"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when the NETCONF server detects that the
+&amp;lt;running&amp;gt; or &amp;lt;startup&amp;gt; configuration datastore
+has been changed by a management session.
+The notification summarizes the edits that
+have been detected.
+The server MAY choose to also generate this
+notification while loading a datastore during the
+boot process for the device.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="changed-by-parms"/&gt;
+ &lt;leaf name="datastore"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="running"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The &amp;lt;running&amp;gt; datastore has changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="startup"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The &amp;lt;startup&amp;gt; datastore has changed&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="running"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates which configuration datastore has changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="edit"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An edit record SHOULD be present for each distinct
+edit operation that the server has detected on
+the target datastore. This list MAY be omitted
+if the detailed edit operations are not known.
+The server MAY report entries in this list for
+changes not made by a NETCONF session (e.g., CLI).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="target"&gt;
+ &lt;type name="instance-identifier"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Topmost node associated with the configuration change.
+A server SHOULD set this object to the node within
+the datastore that is being altered. A server MAY
+set this object to one of the ancestors of the actual
+node that was changed, or omit this object, if the
+exact node is not known.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="operation"&gt;
+ &lt;type name="nc:edit-operation-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type of edit operation performed.
+A server MUST set this object to the NETCONF edit
+operation performed on the target datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/notification&gt;
+ &lt;notification name="netconf-capability-change"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when the NETCONF server detects that
+the server capabilities have changed.
+Indicates which capabilities have been added, deleted,
+and/or modified. The manner in which a server
+capability is changed is outside the scope of this
+document.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="changed-by-parms"/&gt;
+ &lt;leaf-list name="added-capability"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of capabilities that have just been added.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf-list name="deleted-capability"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of capabilities that have just been deleted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;leaf-list name="modified-capability"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of capabilities that have just been modified.
+A capability is considered to be modified if the
+base URI for the capability has not changed, but
+one or more of the parameters encoded at the end of
+the capability URI have changed.
+The new modified value of the complete URI is returned.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/notification&gt;
+ &lt;notification name="netconf-session-start"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when a NETCONF server detects that a
+NETCONF session has started. A server MAY generate
+this event for non-NETCONF management sessions.
+Indicates the identity of the user that started
+the session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="common-session-parms"/&gt;
+ &lt;/notification&gt;
+ &lt;notification name="netconf-session-end"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when a NETCONF server detects that a
+NETCONF session has terminated.
+A server MAY optionally generate this event for
+non-NETCONF management sessions. Indicates the
+identity of the user that owned the session,
+and why the session was terminated.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="common-session-parms"/&gt;
+ &lt;leaf name="killed-by"&gt;
+ &lt;when condition="../termination-reason = 'killed'"/&gt;
+ &lt;type name="nc:session-id-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ID of the session that directly caused this session
+to be abnormally terminated. If this session was abnormally
+terminated by a non-NETCONF session unknown to the server,
+then this leaf will not be present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="termination-reason"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="closed"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session was terminated by the client in normal
+fashion, e.g., by the NETCONF &amp;lt;close-session&amp;gt;
+protocol operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="killed"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session was terminated in abnormal
+fashion, e.g., by the NETCONF &amp;lt;kill-session&amp;gt;
+protocol operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="dropped"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session was terminated because the transport layer
+connection was unexpectedly closed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="timeout"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session was terminated because of inactivity,
+e.g., waiting for the &amp;lt;hello&amp;gt; message or &amp;lt;rpc&amp;gt;
+messages.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="bad-hello"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The client's &amp;lt;hello&amp;gt; message was invalid.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="other"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The session was terminated for some other reason.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Reason the session was terminated.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+ &lt;notification name="netconf-confirmed-commit"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when a NETCONF server detects that a
+confirmed-commit event has occurred. Indicates the event
+and the current state of the confirmed-commit procedure
+in progress.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.4&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;uses name="common-session-parms"&gt;
+ &lt;when condition="confirm-event != 'timeout'"/&gt;
+ &lt;/uses&gt;
+ &lt;leaf name="confirm-event"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="start"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The confirmed-commit procedure has started.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="cancel"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The confirmed-commit procedure has been canceled,
+e.g., due to the session being terminated, or an
+explicit &amp;lt;cancel-commit&amp;gt; operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="timeout"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The confirmed-commit procedure has been canceled
+due to the confirm-timeout interval expiring.
+The common session parameters will not be present
+in this sub-mode.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="extend"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The confirmed-commit timeout has been extended,
+e.g., by a new &amp;lt;confirmed-commit&amp;gt; operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="complete"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The confirmed-commit procedure has been completed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates the event that caused the notification.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="timeout"&gt;
+ &lt;when condition="../confirm-event = 'start' or ../confirm-event = 'extend'"/&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configured timeout value if the event type
+is 'start' or 'extend'. This value represents
+the approximate number of seconds from the event
+time when the 'timeout' event might occur.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yang
new file mode 100644
index 00000000..fa433a1d
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yang
@@ -0,0 +1,501 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf-server {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-server";
+ prefix ncs;
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ import ietf-x509-cert-to-name {
+ prefix x509c2n;
+ reference
+ "RFC 7407: A YANG Data Model for SNMP Configuration";
+ }
+
+ import ietf-ssh-server {
+ prefix ss;
+ revision-date 2016-11-02;
+ reference
+ "RFC YYYY: SSH Client and Server Models";
+ }
+
+ import ietf-tls-server {
+ prefix ts;
+ revision-date 2016-11-02;
+ reference
+ "RFC ZZZZ: TLS Client and Server Models";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Mahesh Jethanandani
+ &lt;mailto:mjethanandani@gmail.com&gt;
+
+ Editor: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;";
+ description
+ "This module contains a collection of YANG definitions for
+ configuring NETCONF servers.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2016-11-02 {
+ description
+ "Initial version";
+ reference
+ "RFC XXXX: NETCONF Client and Server Models";
+ }
+
+ feature listen {
+ description
+ "The 'listen' feature indicates that the NETCONF server
+ supports opening a port to accept NETCONF client connections
+ using at least one transport (e.g., SSH, TLS, etc.).";
+ }
+
+ feature ssh-listen {
+ description
+ "The 'ssh-listen' feature indicates that the NETCONF server
+ supports opening a port to accept NETCONF over SSH
+ client connections.";
+ reference
+ "RFC 6242: Using the NETCONF Protocol over Secure Shell (SSH)";
+ }
+
+ feature tls-listen {
+ description
+ "The 'tls-listen' feature indicates that the NETCONF server
+ supports opening a port to accept NETCONF over TLS
+ client connections.";
+ reference
+ "RFC 7589: Using the NETCONF Protocol over Transport
+ Layer Security (TLS) with Mutual X.509
+ Authentication";
+ }
+
+ feature call-home {
+ description
+ "The 'call-home' feature indicates that the NETCONF server
+ supports initiating NETCONF call home connections to NETCONF
+ clients using at least one transport (e.g., SSH, TLS, etc.).";
+ reference
+ "RFC YYYY: NETCONF Call Home and RESTCONF Call Home";
+ }
+
+ feature ssh-call-home {
+ description
+ "The 'ssh-call-home' feature indicates that the NETCONF
+ server supports initiating a NETCONF over SSH call
+ home connection to NETCONF clients.";
+ reference
+ "RFC YYYY: NETCONF Call Home and RESTCONF Call Home";
+ }
+
+ feature tls-call-home {
+ description
+ "The 'tls-call-home' feature indicates that the NETCONF
+ server supports initiating a NETCONF over TLS call
+ home connection to NETCONF clients.";
+ reference
+ "RFC YYYY: NETCONF Call Home and RESTCONF Call Home";
+ }
+
+ grouping cert-maps-grouping {
+ description
+ "A grouping that defines a container around the
+ cert-to-name structure defined in RFC 7407.";
+ container cert-maps {
+ description
+ "The cert-maps container is used by a TLS-based NETCONF
+ server to map the NETCONF client's presented X.509
+ certificate to a NETCONF username. If no matching and
+ valid cert-to-name list entry can be found, then the
+ NETCONF server MUST close the connection, and MUST NOT
+ accept NETCONF messages over it.";
+ reference
+ "RFC WWWW: NETCONF over TLS, Section 7";
+ uses x509c2n:cert-to-name;
+ }
+ }
+
+ grouping endpoints-container {
+ description
+ "This grouping is used by both the ssh and tls containers
+ for call-home configurations.";
+ container endpoints {
+ description
+ "Container for the list of endpoints.";
+ list endpoint {
+ key "name";
+ min-elements 1;
+ ordered-by user;
+ description
+ "User-ordered list of endpoints for this NETCONF client.
+ Defining more than one enables high-availability.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this endpoint.";
+ }
+
+ leaf address {
+ type inet:host;
+ mandatory true;
+ description
+ "The IP address or hostname of the endpoint. If a
+ hostname is configured and the DNS resolution results
+ in more than one IP address, the NETCONF server
+ will process the IP addresses as if they had been
+ explicitly configured in place of the hostname.";
+ }
+
+ leaf port {
+ type inet:port-number;
+ description
+ "The IP port for this endpoint. The NETCONF server will
+ use the IANA-assigned well-known port if no value is
+ specified.";
+ }
+ }
+ }
+ }
+
+ container netconf-server {
+ description
+ "Top-level container for NETCONF server configuration.";
+ container session-options {
+ description
+ "NETCONF session options, independent of transport
+ or connection strategy.";
+ leaf hello-timeout {
+ type uint16;
+ units "seconds";
+ default "600";
+ description
+ "Specifies the maximum number of seconds that a SSH/TLS
+ connection may wait for a hello message to be received.
+ A connection will be dropped if no hello message is
+ received before this number of seconds elapses. If set
+ to zero, then the server will wait forever for a hello
+ message.";
+ }
+ }
+
+ container listen {
+ if-feature "listen";
+ description
+ "Configures listen behavior";
+ leaf max-sessions {
+ type uint16;
+ default "0";
+ description
+ "Specifies the maximum number of concurrent sessions
+ that can be active at one time. The value 0 indicates
+ that no artificial session limit should be used.";
+ }
+
+ leaf idle-timeout {
+ type uint16;
+ units "seconds";
+ default "3600";
+ description
+ "Specifies the maximum number of seconds that a NETCONF
+ session may remain idle. A NETCONF session will be dropped
+ if it is idle for an interval longer than this number of
+ seconds. If set to zero, then the server will never drop
+ a session because it is idle. Sessions that have a
+ notification subscription active are never dropped.";
+ }
+
+ list endpoint {
+ key "name";
+ description
+ "List of endpoints to listen for NETCONF connections on.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the NETCONF listen endpoint.";
+ }
+
+ choice transport {
+ mandatory true;
+ description
+ "Selects between available transports.";
+ case ssh {
+ if-feature "ssh-listen";
+ container ssh {
+ description
+ "SSH-specific listening configuration for inbound
+ connections.";
+ uses ss:listening-ssh-server-grouping {
+ refine "port" {
+ default "830";
+ }
+ }
+ }
+ }
+
+ case tls {
+ if-feature "tls-listen";
+ container tls {
+ description
+ "TLS-specific listening configuration for inbound
+ connections.";
+ uses ts:listening-tls-server-grouping {
+ refine "port" {
+ default "6513";
+ }
+ augment "client-auth" {
+ description
+ "Augments in the cert-to-name structure.";
+ uses cert-maps-grouping;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ container call-home {
+ if-feature "call-home";
+ description
+ "Configures call-home behavior";
+ list netconf-client {
+ key "name";
+ description
+ "List of NETCONF clients the NETCONF server is to initiate
+ call-home connections to.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the remote NETCONF client.";
+ }
+
+ choice transport {
+ mandatory true;
+ description
+ "Selects between available transports.";
+ case ssh {
+ if-feature "ssh-call-home";
+ container ssh {
+ description
+ "Specifies SSH-specific call-home transport
+ configuration.";
+ uses endpoints-container {
+ refine "endpoints/endpoint/port" {
+ default "4334";
+ }
+ }
+
+ uses ss:non-listening-ssh-server-grouping;
+ }
+ }
+
+ case tls {
+ if-feature "tls-call-home";
+ container tls {
+ description
+ "Specifies TLS-specific call-home transport
+ configuration.";
+ uses endpoints-container {
+ refine "endpoints/endpoint/port" {
+ default "4335";
+ }
+ }
+
+ uses ts:non-listening-tls-server-grouping {
+ augment "client-auth" {
+ description
+ "Augments in the cert-to-name structure.";
+ uses cert-maps-grouping;
+ }
+ }
+ }
+ }
+ }
+
+ container connection-type {
+ description
+ "Indicates the kind of connection to use.";
+ choice connection-type {
+ description
+ "Selects between available connection types.";
+ case persistent-connection {
+ container persistent {
+ presence "true";
+ description
+ "Maintain a persistent connection to the NETCONF
+ client. If the connection goes down, immediately
+ start trying to reconnect to it, using the
+ reconnection strategy.
+
+ This connection type minimizes any NETCONF client
+ to NETCONF server data-transfer delay, albeit at
+ the expense of holding resources longer.";
+ leaf idle-timeout {
+ type uint32;
+ units "seconds";
+ default "86400";
+ description
+ "Specifies the maximum number of seconds that a
+ a NETCONF session may remain idle. A NETCONF
+ session will be dropped if it is idle for an
+ interval longer than this number of seconds.
+ If set to zero, then the server will never drop
+ a session because it is idle. Sessions that
+ have a notification subscription active are
+ never dropped.";
+ }
+
+ container keep-alives {
+ description
+ "Configures the keep-alive policy, to proactively
+ test the aliveness of the SSH/TLS client. An
+ unresponsive SSH/TLS client will be dropped after
+ approximately max-attempts * max-wait seconds.";
+ reference
+ "RFC YYYY: NETCONF Call Home and RESTCONF Call
+ Home, Section 3.1, item S6";
+ leaf max-wait {
+ type uint16 {
+ range "1..max";
+ }
+ units "seconds";
+ default "30";
+ description
+ "Sets the amount of time in seconds after which
+ if no data has been received from the SSH/TLS
+ client, a SSH/TLS-level message will be sent
+ to test the aliveness of the SSH/TLS client.";
+ }
+
+ leaf max-attempts {
+ type uint8;
+ default "3";
+ description
+ "Sets the maximum number of sequential keep-alive
+ messages that can fail to obtain a response from
+ the SSH/TLS client before assuming the SSH/TLS
+ client is no longer alive.";
+ }
+ }
+ }
+ }
+
+ case periodic-connection {
+ container periodic {
+ presence "true";
+ description
+ "Periodically connect to the NETCONF client, so that
+ the NETCONF client may deliver messages pending for
+ the NETCONF server. The NETCONF client must close
+ the connection when it is ready to release it. Once
+ the connection has been closed, the NETCONF server
+ will restart its timer until the next connection.";
+ leaf idle-timeout {
+ type uint16;
+ units "seconds";
+ default "300";
+ description
+ "Specifies the maximum number of seconds that a
+ a NETCONF session may remain idle. A NETCONF
+ session will be dropped if it is idle for an
+ interval longer than this number of seconds.
+ If set to zero, then the server will never drop
+ a session because it is idle. Sessions that
+ have a notification subscription active are
+ never dropped.";
+ }
+
+ leaf reconnect_timeout {
+ type uint16 {
+ range "1..max";
+ }
+ units "minutes";
+ default "60";
+ description
+ "Sets the maximum amount of unconnected time the
+ NETCONF server will wait before re-establishing
+ a connection to the NETCONF client. The NETCONF
+ server may initiate a connection before this
+ time if desired (e.g., to deliver an event
+ notification message).";
+ }
+ }
+ }
+ }
+ }
+
+ container reconnect-strategy {
+ description
+ "The reconnection strategy directs how a NETCONF server
+ reconnects to a NETCONF client, after discovering its
+ connection to the client has dropped, even if due to a
+ reboot. The NETCONF server starts with the specified
+ endpoint and tries to connect to it max-attempts times
+ before trying the next endpoint in the list (round
+ robin).";
+ leaf start-with {
+ type enumeration {
+ enum "first-listed" {
+ description
+ "Indicates that reconnections should start with
+ the first endpoint listed.";
+ }
+ enum "last-connected" {
+ description
+ "Indicates that reconnections should start with
+ the endpoint last connected to. If no previous
+ connection has ever been established, then the
+ first endpoint configured is used. NETCONF
+ servers SHOULD be able to remember the last
+ endpoint connected to across reboots.";
+ }
+ }
+ default "first-listed";
+ description
+ "Specifies which of the NETCONF client's endpoints the
+ NETCONF server should start with when trying to connect
+ to the NETCONF client.";
+ }
+
+ leaf max-attempts {
+ type uint8 {
+ range "1..max";
+ }
+ default "3";
+ description
+ "Specifies the number times the NETCONF server tries to
+ connect to a specific endpoint before moving on to the
+ next endpoint in the list (round robin).";
+ }
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yin
new file mode 100644
index 00000000..4d84c667
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-server@2016-11-02.yin
@@ -0,0 +1,538 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf-server"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ncs="urn:ietf:params:xml:ns:yang:ietf-netconf-server"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:x509c2n="urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name"
+ xmlns:ss="urn:ietf:params:xml:ns:yang:ietf-ssh-server"
+ xmlns:ts="urn:ietf:params:xml:ns:yang:ietf-tls-server"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-netconf-server"/&gt;
+ &lt;prefix value="ncs"/&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-x509-cert-to-name"&gt;
+ &lt;prefix value="x509c2n"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7407: A YANG Data Model for SNMP Configuration&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-ssh-server"&gt;
+ &lt;prefix value="ss"/&gt;
+ &lt;revision-date date="2016-11-02"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: SSH Client and Server Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-tls-server"&gt;
+ &lt;prefix value="ts"/&gt;
+ &lt;revision-date date="2016-11-02"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC ZZZZ: TLS Client and Server Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Mahesh Jethanandani
+ &amp;lt;mailto:mjethanandani@gmail.com&amp;gt;
+
+Editor: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of YANG definitions for
+configuring NETCONF servers.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC XXXX; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2016-11-02"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC XXXX: NETCONF Client and Server Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="listen"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'listen' feature indicates that the NETCONF server
+supports opening a port to accept NETCONF client connections
+using at least one transport (e.g., SSH, TLS, etc.).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="ssh-listen"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'ssh-listen' feature indicates that the NETCONF server
+supports opening a port to accept NETCONF over SSH
+client connections.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6242: Using the NETCONF Protocol over Secure Shell (SSH)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="tls-listen"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'tls-listen' feature indicates that the NETCONF server
+supports opening a port to accept NETCONF over TLS
+client connections.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7589: Using the NETCONF Protocol over Transport
+ Layer Security (TLS) with Mutual X.509
+ Authentication&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="call-home"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'call-home' feature indicates that the NETCONF server
+supports initiating NETCONF call home connections to NETCONF
+clients using at least one transport (e.g., SSH, TLS, etc.).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: NETCONF Call Home and RESTCONF Call Home&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="ssh-call-home"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'ssh-call-home' feature indicates that the NETCONF
+server supports initiating a NETCONF over SSH call
+home connection to NETCONF clients.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: NETCONF Call Home and RESTCONF Call Home&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="tls-call-home"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The 'tls-call-home' feature indicates that the NETCONF
+server supports initiating a NETCONF over TLS call
+home connection to NETCONF clients.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: NETCONF Call Home and RESTCONF Call Home&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;grouping name="cert-maps-grouping"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A grouping that defines a container around the
+cert-to-name structure defined in RFC 7407.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="cert-maps"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The cert-maps container is used by a TLS-based NETCONF
+server to map the NETCONF client's presented X.509
+certificate to a NETCONF username. If no matching and
+valid cert-to-name list entry can be found, then the
+NETCONF server MUST close the connection, and MUST NOT
+accept NETCONF messages over it.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC WWWW: NETCONF over TLS, Section 7&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;uses name="x509c2n:cert-to-name"/&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="endpoints-container"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This grouping is used by both the ssh and tls containers
+for call-home configurations.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="endpoints"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Container for the list of endpoints.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="endpoint"&gt;
+ &lt;key value="name"/&gt;
+ &lt;min-elements value="1"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;User-ordered list of endpoints for this NETCONF client.
+Defining more than one enables high-availability.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this endpoint.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:host"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IP address or hostname of the endpoint. If a
+hostname is configured and the DNS resolution results
+in more than one IP address, the NETCONF server
+will process the IP addresses as if they had been
+explicitly configured in place of the hostname.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="port"&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IP port for this endpoint. The NETCONF server will
+use the IANA-assigned well-known port if no value is
+specified.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;container name="netconf-server"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Top-level container for NETCONF server configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="session-options"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF session options, independent of transport
+or connection strategy.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="hello-timeout"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="600"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the maximum number of seconds that a SSH/TLS
+connection may wait for a hello message to be received.
+A connection will be dropped if no hello message is
+received before this number of seconds elapses. If set
+to zero, then the server will wait forever for a hello
+message.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;container name="listen"&gt;
+ &lt;if-feature name="listen"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configures listen behavior&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="max-sessions"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;default value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the maximum number of concurrent sessions
+that can be active at one time. The value 0 indicates
+that no artificial session limit should be used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="idle-timeout"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="3600"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the maximum number of seconds that a NETCONF
+session may remain idle. A NETCONF session will be dropped
+if it is idle for an interval longer than this number of
+seconds. If set to zero, then the server will never drop
+a session because it is idle. Sessions that have a
+notification subscription active are never dropped.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="endpoint"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of endpoints to listen for NETCONF connections on.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the NETCONF listen endpoint.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="transport"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Selects between available transports.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="ssh"&gt;
+ &lt;if-feature name="ssh-listen"/&gt;
+ &lt;container name="ssh"&gt;
+ &lt;description&gt;
+ &lt;text&gt;SSH-specific listening configuration for inbound
+connections.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="ss:listening-ssh-server-grouping"&gt;
+ &lt;refine target-node="port"&gt;
+ &lt;default value="830"/&gt;
+ &lt;/refine&gt;
+ &lt;/uses&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;case name="tls"&gt;
+ &lt;if-feature name="tls-listen"/&gt;
+ &lt;container name="tls"&gt;
+ &lt;description&gt;
+ &lt;text&gt;TLS-specific listening configuration for inbound
+connections.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="ts:listening-tls-server-grouping"&gt;
+ &lt;refine target-node="port"&gt;
+ &lt;default value="6513"/&gt;
+ &lt;/refine&gt;
+ &lt;augment target-node="client-auth"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Augments in the cert-to-name structure.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="cert-maps-grouping"/&gt;
+ &lt;/augment&gt;
+ &lt;/uses&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="call-home"&gt;
+ &lt;if-feature name="call-home"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configures call-home behavior&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="netconf-client"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of NETCONF clients the NETCONF server is to initiate
+call-home connections to.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the remote NETCONF client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="transport"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Selects between available transports.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="ssh"&gt;
+ &lt;if-feature name="ssh-call-home"/&gt;
+ &lt;container name="ssh"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies SSH-specific call-home transport
+configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="endpoints-container"&gt;
+ &lt;refine target-node="endpoints/endpoint/port"&gt;
+ &lt;default value="4334"/&gt;
+ &lt;/refine&gt;
+ &lt;/uses&gt;
+ &lt;uses name="ss:non-listening-ssh-server-grouping"/&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;case name="tls"&gt;
+ &lt;if-feature name="tls-call-home"/&gt;
+ &lt;container name="tls"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies TLS-specific call-home transport
+configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="endpoints-container"&gt;
+ &lt;refine target-node="endpoints/endpoint/port"&gt;
+ &lt;default value="4335"/&gt;
+ &lt;/refine&gt;
+ &lt;/uses&gt;
+ &lt;uses name="ts:non-listening-tls-server-grouping"&gt;
+ &lt;augment target-node="client-auth"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Augments in the cert-to-name structure.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="cert-maps-grouping"/&gt;
+ &lt;/augment&gt;
+ &lt;/uses&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;container name="connection-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates the kind of connection to use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="connection-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Selects between available connection types.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="persistent-connection"&gt;
+ &lt;container name="persistent"&gt;
+ &lt;presence value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maintain a persistent connection to the NETCONF
+client. If the connection goes down, immediately
+start trying to reconnect to it, using the
+reconnection strategy.
+
+This connection type minimizes any NETCONF client
+to NETCONF server data-transfer delay, albeit at
+the expense of holding resources longer.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="idle-timeout"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="86400"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the maximum number of seconds that a
+a NETCONF session may remain idle. A NETCONF
+session will be dropped if it is idle for an
+interval longer than this number of seconds.
+If set to zero, then the server will never drop
+a session because it is idle. Sessions that
+have a notification subscription active are
+never dropped.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="keep-alives"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configures the keep-alive policy, to proactively
+test the aliveness of the SSH/TLS client. An
+unresponsive SSH/TLS client will be dropped after
+approximately max-attempts * max-wait seconds.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: NETCONF Call Home and RESTCONF Call
+Home, Section 3.1, item S6&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="max-wait"&gt;
+ &lt;type name="uint16"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="30"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Sets the amount of time in seconds after which
+if no data has been received from the SSH/TLS
+client, a SSH/TLS-level message will be sent
+to test the aliveness of the SSH/TLS client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="max-attempts"&gt;
+ &lt;type name="uint8"/&gt;
+ &lt;default value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Sets the maximum number of sequential keep-alive
+messages that can fail to obtain a response from
+the SSH/TLS client before assuming the SSH/TLS
+client is no longer alive.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;case name="periodic-connection"&gt;
+ &lt;container name="periodic"&gt;
+ &lt;presence value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Periodically connect to the NETCONF client, so that
+the NETCONF client may deliver messages pending for
+the NETCONF server. The NETCONF client must close
+the connection when it is ready to release it. Once
+the connection has been closed, the NETCONF server
+will restart its timer until the next connection.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="idle-timeout"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="300"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the maximum number of seconds that a
+a NETCONF session may remain idle. A NETCONF
+session will be dropped if it is idle for an
+interval longer than this number of seconds.
+If set to zero, then the server will never drop
+a session because it is idle. Sessions that
+have a notification subscription active are
+never dropped.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="reconnect_timeout"&gt;
+ &lt;type name="uint16"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="minutes"/&gt;
+ &lt;default value="60"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Sets the maximum amount of unconnected time the
+NETCONF server will wait before re-establishing
+a connection to the NETCONF client. The NETCONF
+server may initiate a connection before this
+time if desired (e.g., to deliver an event
+notification message).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;container name="reconnect-strategy"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The reconnection strategy directs how a NETCONF server
+reconnects to a NETCONF client, after discovering its
+connection to the client has dropped, even if due to a
+reboot. The NETCONF server starts with the specified
+endpoint and tries to connect to it max-attempts times
+before trying the next endpoint in the list (round
+robin).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="start-with"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="first-listed"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that reconnections should start with
+the first endpoint listed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="last-connected"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that reconnections should start with
+the endpoint last connected to. If no previous
+connection has ever been established, then the
+first endpoint configured is used. NETCONF
+servers SHOULD be able to remember the last
+endpoint connected to across reboots.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="first-listed"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies which of the NETCONF client's endpoints the
+NETCONF server should start with when trying to connect
+to the NETCONF client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="max-attempts"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;default value="3"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the number times the NETCONF server tries to
+connect to a specific endpoint before moving on to the
+next endpoint in the list (round robin).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yang
new file mode 100644
index 00000000..896b6548
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yang
@@ -0,0 +1,132 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf-with-defaults {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults";
+ prefix ncwd;
+
+ import ietf-netconf {
+ prefix nc;
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration Protocol) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+
+ WG List: &lt;netconf@ietf.org&gt;
+
+ WG Chair: Bert Wijnen
+ &lt;bertietf@bwijnen.net&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mehmet.ersue@nsn.com&gt;
+
+ Editor: Andy Bierman
+ &lt;andy.bierman@brocade.com&gt;
+
+ Editor: Balazs Lengyel
+ &lt;balazs.lengyel@ericsson.com&gt;";
+ description
+ "This module defines an extension to the NETCONF protocol
+ that allows the NETCONF client to control how default
+ values are handled by the server in particular NETCONF
+ operations.
+
+ Copyright (c) 2011 IETF Trust and the persons identified as
+ the document authors. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6243; see
+ the RFC itself for full legal notices.";
+
+ revision 2011-06-01 {
+ description
+ "Initial version.";
+ reference
+ "RFC 6243: With-defaults Capability for NETCONF";
+ }
+
+ typedef with-defaults-mode {
+ type enumeration {
+ enum "report-all" {
+ description
+ "All default data is reported.";
+ reference
+ "RFC 6243; Section 3.1";
+ }
+ enum "report-all-tagged" {
+ description
+ "All default data is reported.
+ Any nodes considered to be default data
+ will contain a 'default' XML attribute,
+ set to 'true' or '1'.";
+ reference
+ "RFC 6243; Section 3.4";
+ }
+ enum "trim" {
+ description
+ "Values are not reported if they contain the default.";
+ reference
+ "RFC 6243; Section 3.2";
+ }
+ enum "explicit" {
+ description
+ "Report values that contain the definition of
+ explicitly set data.";
+ reference
+ "RFC 6243; Section 3.3";
+ }
+ }
+ description
+ "Possible modes to report default data.";
+ reference
+ "RFC 6243; Section 3.";
+ }
+
+ grouping with-defaults-parameters {
+ description
+ "Contains the &lt;with-defaults&gt; parameter for control
+ of defaults in NETCONF retrieval operations.";
+ leaf with-defaults {
+ type with-defaults-mode;
+ description
+ "The explicit defaults processing mode requested.";
+ reference
+ "RFC 6243; Section 4.5.1";
+ }
+ }
+
+ augment "/nc:get-config/nc:input" {
+ description
+ "Adds the &lt;with-defaults&gt; parameter to the
+ input of the NETCONF &lt;get-config&gt; operation.";
+ reference
+ "RFC 6243; Section 4.5.1";
+ uses with-defaults-parameters;
+ }
+
+ augment "/nc:get/nc:input" {
+ description
+ "Adds the &lt;with-defaults&gt; parameter to
+ the input of the NETCONF &lt;get&gt; operation.";
+ reference
+ "RFC 6243; Section 4.5.1";
+ uses with-defaults-parameters;
+ }
+
+ augment "/nc:copy-config/nc:input" {
+ description
+ "Adds the &lt;with-defaults&gt; parameter to
+ the input of the NETCONF &lt;copy-config&gt; operation.";
+ reference
+ "RFC 6243; Section 4.5.1";
+ uses with-defaults-parameters;
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yin
new file mode 100644
index 00000000..d87ea7ff
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf-with-defaults@2011-06-01.yin
@@ -0,0 +1,152 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf-with-defaults"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ncwd="urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults"
+ xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults"/&gt;
+ &lt;prefix value="ncwd"/&gt;
+ &lt;import module="ietf-netconf"&gt;
+ &lt;prefix value="nc"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration Protocol) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+
+WG List: &amp;lt;netconf@ietf.org&amp;gt;
+
+WG Chair: Bert Wijnen
+ &amp;lt;bertietf@bwijnen.net&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mehmet.ersue@nsn.com&amp;gt;
+
+Editor: Andy Bierman
+ &amp;lt;andy.bierman@brocade.com&amp;gt;
+
+Editor: Balazs Lengyel
+ &amp;lt;balazs.lengyel@ericsson.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module defines an extension to the NETCONF protocol
+that allows the NETCONF client to control how default
+values are handled by the server in particular NETCONF
+operations.
+
+Copyright (c) 2011 IETF Trust and the persons identified as
+the document authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6243; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2011-06-01"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243: With-defaults Capability for NETCONF&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="with-defaults-mode"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="report-all"&gt;
+ &lt;description&gt;
+ &lt;text&gt;All default data is reported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 3.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/enum&gt;
+ &lt;enum name="report-all-tagged"&gt;
+ &lt;description&gt;
+ &lt;text&gt;All default data is reported.
+Any nodes considered to be default data
+will contain a 'default' XML attribute,
+set to 'true' or '1'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 3.4&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/enum&gt;
+ &lt;enum name="trim"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Values are not reported if they contain the default.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 3.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/enum&gt;
+ &lt;enum name="explicit"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Report values that contain the definition of
+explicitly set data.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 3.3&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Possible modes to report default data.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 3.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="with-defaults-parameters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the &amp;lt;with-defaults&amp;gt; parameter for control
+of defaults in NETCONF retrieval operations.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="with-defaults"&gt;
+ &lt;type name="with-defaults-mode"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The explicit defaults processing mode requested.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 4.5.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;augment target-node="/nc:get-config/nc:input"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Adds the &amp;lt;with-defaults&amp;gt; parameter to the
+input of the NETCONF &amp;lt;get-config&amp;gt; operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 4.5.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;uses name="with-defaults-parameters"/&gt;
+ &lt;/augment&gt;
+ &lt;augment target-node="/nc:get/nc:input"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Adds the &amp;lt;with-defaults&amp;gt; parameter to
+the input of the NETCONF &amp;lt;get&amp;gt; operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 4.5.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;uses name="with-defaults-parameters"/&gt;
+ &lt;/augment&gt;
+ &lt;augment target-node="/nc:copy-config/nc:input"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Adds the &amp;lt;with-defaults&amp;gt; parameter to
+the input of the NETCONF &amp;lt;copy-config&amp;gt; operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6243; Section 4.5.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;uses name="with-defaults-parameters"/&gt;
+ &lt;/augment&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yang
new file mode 100644
index 00000000..1ed9a5a5
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yang
@@ -0,0 +1,938 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-netconf {
+ namespace "urn:ietf:params:xml:ns:netconf:base:1.0";
+ prefix nc;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-netconf-acm {
+ prefix nacm;
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;netconf@ietf.org&gt;
+
+ WG Chair: Bert Wijnen
+ &lt;bertietf@bwijnen.net&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mehmet.ersue@nsn.com&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mbj@tail-f.com&gt;
+
+ Editor: Juergen Schoenwaelder
+ &lt;j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Andy Bierman
+ &lt;andy.bierman@brocade.com&gt;";
+ description
+ "NETCONF Protocol Data Types and Protocol Operations.
+
+ Copyright (c) 2011 IETF Trust and the persons identified as
+ the document authors. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6241; see
+ the RFC itself for full legal notices.";
+
+ revision 2011-06-01 {
+ description
+ "Initial revision;
+ 2013-09-29: Updated to include NACM attributes,
+ as specified in RFC 6536: sec 3.2.5 and 3.2.8";
+ reference
+ "RFC 6241: Network Configuration Protocol";
+ }
+
+ extension get-filter-element-attributes {
+ description
+ "If this extension is present within an 'anyxml'
+ statement named 'filter', which must be conceptually
+ defined within the RPC input section for the &lt;get&gt;
+ and &lt;get-config&gt; protocol operations, then the
+ following unqualified XML attribute is supported
+ within the &lt;filter&gt; element, within a &lt;get&gt; or
+ &lt;get-config&gt; protocol operation:
+
+ type : optional attribute with allowed
+ value strings 'subtree' and 'xpath'.
+ If missing, the default value is 'subtree'.
+
+ If the 'xpath' feature is supported, then the
+ following unqualified XML attribute is
+ also supported:
+
+ select: optional attribute containing a
+ string representing an XPath expression.
+ The 'type' attribute must be equal to 'xpath'
+ if this attribute is present.";
+ }
+
+
+ feature writable-running {
+ description
+ "NETCONF :writable-running capability;
+ If the server advertises the :writable-running
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.2";
+ }
+
+ feature candidate {
+ description
+ "NETCONF :candidate capability;
+ If the server advertises the :candidate
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.3";
+ }
+
+ feature confirmed-commit {
+ if-feature "candidate";
+ description
+ "NETCONF :confirmed-commit:1.1 capability;
+ If the server advertises the :confirmed-commit:1.1
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.4";
+ }
+
+ feature rollback-on-error {
+ description
+ "NETCONF :rollback-on-error capability;
+ If the server advertises the :rollback-on-error
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.5";
+ }
+
+ feature validate {
+ description
+ "NETCONF :validate:1.1 capability;
+ If the server advertises the :validate:1.1
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.6";
+ }
+
+ feature startup {
+ description
+ "NETCONF :startup capability;
+ If the server advertises the :startup
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.7";
+ }
+
+ feature url {
+ description
+ "NETCONF :url capability;
+ If the server advertises the :url
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.8";
+ }
+
+ feature xpath {
+ description
+ "NETCONF :xpath capability;
+ If the server advertises the :xpath
+ capability for a session, then this feature must
+ also be enabled for that session. Otherwise,
+ this feature must not be enabled.";
+ reference
+ "RFC 6241, Section 8.9";
+ }
+
+ typedef session-id-type {
+ type uint32 {
+ range "1..max";
+ }
+ description
+ "NETCONF Session Id";
+ }
+
+ typedef session-id-or-zero-type {
+ type uint32;
+ description
+ "NETCONF Session Id or Zero to indicate none";
+ }
+
+ typedef error-tag-type {
+ type enumeration {
+ enum "in-use" {
+ description
+ "The request requires a resource that
+ already is in use.";
+ }
+ enum "invalid-value" {
+ description
+ "The request specifies an unacceptable value for one
+ or more parameters.";
+ }
+ enum "too-big" {
+ description
+ "The request or response (that would be generated) is
+ too large for the implementation to handle.";
+ }
+ enum "missing-attribute" {
+ description
+ "An expected attribute is missing.";
+ }
+ enum "bad-attribute" {
+ description
+ "An attribute value is not correct; e.g., wrong type,
+ out of range, pattern mismatch.";
+ }
+ enum "unknown-attribute" {
+ description
+ "An unexpected attribute is present.";
+ }
+ enum "missing-element" {
+ description
+ "An expected element is missing.";
+ }
+ enum "bad-element" {
+ description
+ "An element value is not correct; e.g., wrong type,
+ out of range, pattern mismatch.";
+ }
+ enum "unknown-element" {
+ description
+ "An unexpected element is present.";
+ }
+ enum "unknown-namespace" {
+ description
+ "An unexpected namespace is present.";
+ }
+ enum "access-denied" {
+ description
+ "Access to the requested protocol operation or
+ data model is denied because authorization failed.";
+ }
+ enum "lock-denied" {
+ description
+ "Access to the requested lock is denied because the
+ lock is currently held by another entity.";
+ }
+ enum "resource-denied" {
+ description
+ "Request could not be completed because of
+ insufficient resources.";
+ }
+ enum "rollback-failed" {
+ description
+ "Request to roll back some configuration change (via
+ rollback-on-error or &lt;discard-changes&gt; operations)
+ was not completed for some reason.";
+ }
+ enum "data-exists" {
+ description
+ "Request could not be completed because the relevant
+ data model content already exists. For example,
+ a 'create' operation was attempted on data that
+ already exists.";
+ }
+ enum "data-missing" {
+ description
+ "Request could not be completed because the relevant
+ data model content does not exist. For example,
+ a 'delete' operation was attempted on
+ data that does not exist.";
+ }
+ enum "operation-not-supported" {
+ description
+ "Request could not be completed because the requested
+ operation is not supported by this implementation.";
+ }
+ enum "operation-failed" {
+ description
+ "Request could not be completed because the requested
+ operation failed for some reason not covered by
+ any other error condition.";
+ }
+ enum "partial-operation" {
+ description
+ "This error-tag is obsolete, and SHOULD NOT be sent
+ by servers conforming to this document.";
+ }
+ enum "malformed-message" {
+ description
+ "A message could not be handled because it failed to
+ be parsed correctly. For example, the message is not
+ well-formed XML or it uses an invalid character set.";
+ }
+ }
+ description
+ "NETCONF Error Tag";
+ reference
+ "RFC 6241, Appendix A";
+ }
+
+ typedef error-severity-type {
+ type enumeration {
+ enum "error" {
+ description
+ "Error severity";
+ }
+ enum "warning" {
+ description
+ "Warning severity";
+ }
+ }
+ description
+ "NETCONF Error Severity";
+ reference
+ "RFC 6241, Section 4.3";
+ }
+
+ typedef edit-operation-type {
+ type enumeration {
+ enum "merge" {
+ description
+ "The configuration data identified by the
+ element containing this attribute is merged
+ with the configuration at the corresponding
+ level in the configuration datastore identified
+ by the target parameter.";
+ }
+ enum "replace" {
+ description
+ "The configuration data identified by the element
+ containing this attribute replaces any related
+ configuration in the configuration datastore
+ identified by the target parameter. If no such
+ configuration data exists in the configuration
+ datastore, it is created. Unlike a
+ &lt;copy-config&gt; operation, which replaces the
+ entire target configuration, only the configuration
+ actually present in the config parameter is affected.";
+ }
+ enum "create" {
+ description
+ "The configuration data identified by the element
+ containing this attribute is added to the
+ configuration if and only if the configuration
+ data does not already exist in the configuration
+ datastore. If the configuration data exists, an
+ &lt;rpc-error&gt; element is returned with an
+ &lt;error-tag&gt; value of 'data-exists'.";
+ }
+ enum "delete" {
+ description
+ "The configuration data identified by the element
+ containing this attribute is deleted from the
+ configuration if and only if the configuration
+ data currently exists in the configuration
+ datastore. If the configuration data does not
+ exist, an &lt;rpc-error&gt; element is returned with
+ an &lt;error-tag&gt; value of 'data-missing'.";
+ }
+ enum "remove" {
+ description
+ "The configuration data identified by the element
+ containing this attribute is deleted from the
+ configuration if the configuration
+ data currently exists in the configuration
+ datastore. If the configuration data does not
+ exist, the 'remove' operation is silently ignored
+ by the server.";
+ }
+ }
+ default "merge";
+ description
+ "NETCONF 'operation' attribute values";
+ reference
+ "RFC 6241, Section 7.2";
+ }
+
+ rpc get-config {
+ description
+ "Retrieve all or part of a specified configuration.";
+ reference
+ "RFC 6241, Section 7.1";
+ input {
+ container source {
+ description
+ "Particular configuration to retrieve.";
+ choice config-source {
+ mandatory true;
+ description
+ "The configuration to retrieve.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config source.";
+ }
+
+ leaf running {
+ type empty;
+ description
+ "The running configuration is the config source.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config source.
+ This is optional-to-implement on the server because
+ not all servers will support filtering for this
+ datastore.";
+ }
+ }
+ }
+
+ anyxml filter {
+ nc:get-filter-element-attributes;
+ description
+ "Subtree or XPath filter to use.";
+ }
+ }
+
+ output {
+ anyxml data {
+ description
+ "Copy of the source datastore subset that matched
+ the filter criteria (if any). An empty data container
+ indicates that the request did not produce any results.";
+ }
+ }
+ }
+
+ rpc edit-config {
+ description
+ "The &lt;edit-config&gt; operation loads all or part of a specified
+ configuration to the specified target configuration.";
+ reference
+ "RFC 6241, Section 7.2";
+ input {
+ container target {
+ description
+ "Particular configuration to edit.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config target.";
+ }
+
+ leaf running {
+ if-feature "writable-running";
+ type empty;
+ description
+ "The running configuration is the config source.";
+ }
+ }
+ }
+
+ leaf default-operation {
+ type enumeration {
+ enum "merge" {
+ description
+ "The default operation is merge.";
+ }
+ enum "replace" {
+ description
+ "The default operation is replace.";
+ }
+ enum "none" {
+ description
+ "There is no default operation.";
+ }
+ }
+ default "merge";
+ description
+ "The default operation to use.";
+ }
+
+ leaf test-option {
+ if-feature "validate";
+ type enumeration {
+ enum "test-then-set" {
+ description
+ "The server will test and then set if no errors.";
+ }
+ enum "set" {
+ description
+ "The server will set without a test first.";
+ }
+ enum "test-only" {
+ description
+ "The server will only test and not set, even
+ if there are no errors.";
+ }
+ }
+ default "test-then-set";
+ description
+ "The test option to use.";
+ }
+
+ leaf error-option {
+ type enumeration {
+ enum "stop-on-error" {
+ description
+ "The server will stop on errors.";
+ }
+ enum "continue-on-error" {
+ description
+ "The server may continue on errors.";
+ }
+ enum "rollback-on-error" {
+ description
+ "The server will roll back on errors.
+ This value can only be used if the 'rollback-on-error'
+ feature is supported.";
+ }
+ }
+ default "stop-on-error";
+ description
+ "The error option to use.";
+ }
+
+ choice edit-content {
+ mandatory true;
+ description
+ "The content for the edit operation.";
+ anyxml config {
+ description
+ "Inline Config content.";
+ }
+
+ leaf url {
+ if-feature "url";
+ type inet:uri;
+ description
+ "URL-based config content.";
+ }
+ }
+ }
+ }
+
+ rpc copy-config {
+ description
+ "Create or replace an entire configuration datastore with the
+ contents of another complete configuration datastore.";
+ reference
+ "RFC 6241, Section 7.3";
+ input {
+ container target {
+ description
+ "Particular configuration to copy to.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target of the copy operation.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config target.";
+ }
+
+ leaf running {
+ if-feature "writable-running";
+ type empty;
+ description
+ "The running configuration is the config target.
+ This is optional-to-implement on the server.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config target.";
+ }
+
+ leaf url {
+ if-feature "url";
+ type inet:uri;
+ description
+ "The URL-based configuration is the config target.";
+ }
+ }
+ }
+
+ container source {
+ description
+ "Particular configuration to copy from.";
+ choice config-source {
+ mandatory true;
+ description
+ "The configuration source for the copy operation.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config source.";
+ }
+
+ leaf running {
+ type empty;
+ description
+ "The running configuration is the config source.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config source.";
+ }
+
+ leaf url {
+ if-feature "url";
+ type inet:uri;
+ description
+ "The URL-based configuration is the config source.";
+ }
+
+ anyxml config {
+ description
+ "Inline Config content: &lt;config&gt; element. Represents
+ an entire configuration datastore, not
+ a subset of the running datastore.";
+ }
+ }
+ }
+ }
+ }
+
+ rpc delete-config {
+ nacm:default-deny-all;
+ description
+ "Delete a configuration datastore.";
+ reference
+ "RFC 6241, Section 7.4";
+ input {
+ container target {
+ description
+ "Particular configuration to delete.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target to delete.";
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config target.";
+ }
+
+ leaf url {
+ if-feature "url";
+ type inet:uri;
+ description
+ "The URL-based configuration is the config target.";
+ }
+ }
+ }
+ }
+ }
+
+ rpc lock {
+ description
+ "The lock operation allows the client to lock the configuration
+ system of a device.";
+ reference
+ "RFC 6241, Section 7.5";
+ input {
+ container target {
+ description
+ "Particular configuration to lock.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target to lock.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config target.";
+ }
+
+ leaf running {
+ type empty;
+ description
+ "The running configuration is the config target.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config target.";
+ }
+ }
+ }
+ }
+ }
+
+ rpc unlock {
+ description
+ "The unlock operation is used to release a configuration lock,
+ previously obtained with the 'lock' operation.";
+ reference
+ "RFC 6241, Section 7.6";
+ input {
+ container target {
+ description
+ "Particular configuration to unlock.";
+ choice config-target {
+ mandatory true;
+ description
+ "The configuration target to unlock.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config target.";
+ }
+
+ leaf running {
+ type empty;
+ description
+ "The running configuration is the config target.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config target.";
+ }
+ }
+ }
+ }
+ }
+
+ rpc get {
+ description
+ "Retrieve running configuration and device state information.";
+ reference
+ "RFC 6241, Section 7.7";
+ input {
+ anyxml filter {
+ nc:get-filter-element-attributes;
+ description
+ "This parameter specifies the portion of the system
+ configuration and state data to retrieve.";
+ }
+ }
+
+ output {
+ anyxml data {
+ description
+ "Copy of the running datastore subset and/or state
+ data that matched the filter criteria (if any).
+ An empty data container indicates that the request did not
+ produce any results.";
+ }
+ }
+ }
+
+ rpc close-session {
+ description
+ "Request graceful termination of a NETCONF session.";
+ reference
+ "RFC 6241, Section 7.8";
+ }
+
+ rpc kill-session {
+ nacm:default-deny-all;
+ description
+ "Force the termination of a NETCONF session.";
+ reference
+ "RFC 6241, Section 7.9";
+ input {
+ leaf session-id {
+ type session-id-type;
+ mandatory true;
+ description
+ "Particular session to kill.";
+ }
+ }
+ }
+
+ rpc commit {
+ if-feature "candidate";
+ description
+ "Commit the candidate configuration as the device's new
+ current configuration.";
+ reference
+ "RFC 6241, Section 8.3.4.1";
+ input {
+ leaf confirmed {
+ if-feature "confirmed-commit";
+ type empty;
+ description
+ "Requests a confirmed commit.";
+ reference
+ "RFC 6241, Section 8.3.4.1";
+ }
+
+ leaf confirm-timeout {
+ if-feature "confirmed-commit";
+ type uint32 {
+ range "1..max";
+ }
+ units "seconds";
+ default "600";
+ description
+ "The timeout interval for a confirmed commit.";
+ reference
+ "RFC 6241, Section 8.3.4.1";
+ }
+
+ leaf persist {
+ if-feature "confirmed-commit";
+ type string;
+ description
+ "This parameter is used to make a confirmed commit
+ persistent. A persistent confirmed commit is not aborted
+ if the NETCONF session terminates. The only way to abort
+ a persistent confirmed commit is to let the timer expire,
+ or to use the &lt;cancel-commit&gt; operation.
+
+ The value of this parameter is a token that must be given
+ in the 'persist-id' parameter of &lt;commit&gt; or
+ &lt;cancel-commit&gt; operations in order to confirm or cancel
+ the persistent confirmed commit.
+
+ The token should be a random string.";
+ reference
+ "RFC 6241, Section 8.3.4.1";
+ }
+
+ leaf persist-id {
+ if-feature "confirmed-commit";
+ type string;
+ description
+ "This parameter is given in order to commit a persistent
+ confirmed commit. The value must be equal to the value
+ given in the 'persist' parameter to the &lt;commit&gt; operation.
+ If it does not match, the operation fails with an
+ 'invalid-value' error.";
+ reference
+ "RFC 6241, Section 8.3.4.1";
+ }
+ }
+ }
+
+ rpc discard-changes {
+ if-feature "candidate";
+ description
+ "Revert the candidate configuration to the current
+ running configuration.";
+ reference
+ "RFC 6241, Section 8.3.4.2";
+ }
+
+ rpc cancel-commit {
+ if-feature "confirmed-commit";
+ description
+ "This operation is used to cancel an ongoing confirmed commit.
+ If the confirmed commit is persistent, the parameter
+ 'persist-id' must be given, and it must match the value of the
+ 'persist' parameter.";
+ reference
+ "RFC 6241, Section 8.4.4.1";
+ input {
+ leaf persist-id {
+ type string;
+ description
+ "This parameter is given in order to cancel a persistent
+ confirmed commit. The value must be equal to the value
+ given in the 'persist' parameter to the &lt;commit&gt; operation.
+ If it does not match, the operation fails with an
+ 'invalid-value' error.";
+ }
+ }
+ }
+
+ rpc validate {
+ if-feature "validate";
+ description
+ "Validates the contents of the specified configuration.";
+ reference
+ "RFC 6241, Section 8.6.4.1";
+ input {
+ container source {
+ description
+ "Particular configuration to validate.";
+ choice config-source {
+ mandatory true;
+ description
+ "The configuration source to validate.";
+ leaf candidate {
+ if-feature "candidate";
+ type empty;
+ description
+ "The candidate configuration is the config source.";
+ }
+
+ leaf running {
+ type empty;
+ description
+ "The running configuration is the config source.";
+ }
+
+ leaf startup {
+ if-feature "startup";
+ type empty;
+ description
+ "The startup configuration is the config source.";
+ }
+
+ leaf url {
+ if-feature "url";
+ type inet:uri;
+ description
+ "The URL-based configuration is the config source.";
+ }
+
+ anyxml config {
+ description
+ "Inline Config content: &lt;config&gt; element. Represents
+ an entire configuration datastore, not
+ a subset of the running datastore.";
+ }
+ }
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yin
new file mode 100644
index 00000000..65b800e6
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-netconf@2011-06-01.yin
@@ -0,0 +1,1035 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-netconf"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:nacm="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:netconf:base:1.0"/&gt;
+ &lt;prefix value="nc"/&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-netconf-acm"&gt;
+ &lt;prefix value="nacm"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;netconf@ietf.org&amp;gt;
+
+WG Chair: Bert Wijnen
+ &amp;lt;bertietf@bwijnen.net&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mehmet.ersue@nsn.com&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mbj@tail-f.com&amp;gt;
+
+Editor: Juergen Schoenwaelder
+ &amp;lt;j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Andy Bierman
+ &amp;lt;andy.bierman@brocade.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Protocol Data Types and Protocol Operations.
+
+Copyright (c) 2011 IETF Trust and the persons identified as
+the document authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6241; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2011-06-01"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision;
+2013-09-29: Updated to include NACM attributes,
+as specified in RFC 6536: sec 3.2.5 and 3.2.8&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241: Network Configuration Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;extension name="get-filter-element-attributes"&gt;
+ &lt;description&gt;
+ &lt;text&gt;If this extension is present within an 'anyxml'
+statement named 'filter', which must be conceptually
+defined within the RPC input section for the &amp;lt;get&amp;gt;
+and &amp;lt;get-config&amp;gt; protocol operations, then the
+following unqualified XML attribute is supported
+within the &amp;lt;filter&amp;gt; element, within a &amp;lt;get&amp;gt; or
+&amp;lt;get-config&amp;gt; protocol operation:
+
+ type : optional attribute with allowed
+ value strings 'subtree' and 'xpath'.
+ If missing, the default value is 'subtree'.
+
+If the 'xpath' feature is supported, then the
+following unqualified XML attribute is
+also supported:
+
+ select: optional attribute containing a
+ string representing an XPath expression.
+ The 'type' attribute must be equal to 'xpath'
+ if this attribute is present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/extension&gt;
+ &lt;feature name="writable-running"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :writable-running capability;
+If the server advertises the :writable-running
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="candidate"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :candidate capability;
+If the server advertises the :candidate
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="confirmed-commit"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :confirmed-commit:1.1 capability;
+If the server advertises the :confirmed-commit:1.1
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.4&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="rollback-on-error"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :rollback-on-error capability;
+If the server advertises the :rollback-on-error
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="validate"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :validate:1.1 capability;
+If the server advertises the :validate:1.1
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.6&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="startup"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :startup capability;
+If the server advertises the :startup
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.7&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="url"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :url capability;
+If the server advertises the :url
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.8&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="xpath"&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF :xpath capability;
+If the server advertises the :xpath
+capability for a session, then this feature must
+also be enabled for that session. Otherwise,
+this feature must not be enabled.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.9&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;typedef name="session-id-type"&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Session Id&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="session-id-or-zero-type"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Session Id or Zero to indicate none&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="error-tag-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="in-use"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The request requires a resource that
+already is in use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="invalid-value"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The request specifies an unacceptable value for one
+or more parameters.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="too-big"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The request or response (that would be generated) is
+too large for the implementation to handle.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="missing-attribute"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An expected attribute is missing.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="bad-attribute"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An attribute value is not correct; e.g., wrong type,
+out of range, pattern mismatch.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="unknown-attribute"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unexpected attribute is present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="missing-element"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An expected element is missing.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="bad-element"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An element value is not correct; e.g., wrong type,
+out of range, pattern mismatch.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="unknown-element"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unexpected element is present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="unknown-namespace"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unexpected namespace is present.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="access-denied"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Access to the requested protocol operation or
+data model is denied because authorization failed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="lock-denied"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Access to the requested lock is denied because the
+lock is currently held by another entity.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="resource-denied"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request could not be completed because of
+insufficient resources.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="rollback-failed"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request to roll back some configuration change (via
+rollback-on-error or &amp;lt;discard-changes&amp;gt; operations)
+was not completed for some reason.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="data-exists"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request could not be completed because the relevant
+data model content already exists. For example,
+a 'create' operation was attempted on data that
+already exists.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="data-missing"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request could not be completed because the relevant
+data model content does not exist. For example,
+a 'delete' operation was attempted on
+data that does not exist.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="operation-not-supported"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request could not be completed because the requested
+operation is not supported by this implementation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="operation-failed"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request could not be completed because the requested
+operation failed for some reason not covered by
+any other error condition.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="partial-operation"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This error-tag is obsolete, and SHOULD NOT be sent
+by servers conforming to this document.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="malformed-message"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A message could not be handled because it failed to
+be parsed correctly. For example, the message is not
+well-formed XML or it uses an invalid character set.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Error Tag&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Appendix A&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="error-severity-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="error"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Error severity&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="warning"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Warning severity&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF Error Severity&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 4.3&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="edit-operation-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="merge"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration data identified by the
+element containing this attribute is merged
+with the configuration at the corresponding
+level in the configuration datastore identified
+by the target parameter.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="replace"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration data identified by the element
+containing this attribute replaces any related
+configuration in the configuration datastore
+identified by the target parameter. If no such
+configuration data exists in the configuration
+datastore, it is created. Unlike a
+&amp;lt;copy-config&amp;gt; operation, which replaces the
+entire target configuration, only the configuration
+actually present in the config parameter is affected.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="create"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration data identified by the element
+containing this attribute is added to the
+configuration if and only if the configuration
+data does not already exist in the configuration
+datastore. If the configuration data exists, an
+&amp;lt;rpc-error&amp;gt; element is returned with an
+&amp;lt;error-tag&amp;gt; value of 'data-exists'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="delete"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration data identified by the element
+containing this attribute is deleted from the
+configuration if and only if the configuration
+data currently exists in the configuration
+datastore. If the configuration data does not
+exist, an &amp;lt;rpc-error&amp;gt; element is returned with
+an &amp;lt;error-tag&amp;gt; value of 'data-missing'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="remove"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration data identified by the element
+containing this attribute is deleted from the
+configuration if the configuration
+data currently exists in the configuration
+datastore. If the configuration data does not
+exist, the 'remove' operation is silently ignored
+by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="merge"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;NETCONF 'operation' attribute values&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;rpc name="get-config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Retrieve all or part of a specified configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="source"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to retrieve.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-source"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration to retrieve.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config source.
+This is optional-to-implement on the server because
+not all servers will support filtering for this
+datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;anyxml name="filter"&gt;
+ &lt;nc:get-filter-element-attributes/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Subtree or XPath filter to use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;anyxml name="data"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Copy of the source datastore subset that matched
+the filter criteria (if any). An empty data container
+indicates that the request did not produce any results.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/output&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="edit-config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The &amp;lt;edit-config&amp;gt; operation loads all or part of a specified
+configuration to the specified target configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="target"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to edit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-target"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;if-feature name="writable-running"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;leaf name="default-operation"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="merge"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The default operation is merge.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="replace"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The default operation is replace.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="none"&gt;
+ &lt;description&gt;
+ &lt;text&gt;There is no default operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="merge"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The default operation to use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="test-option"&gt;
+ &lt;if-feature name="validate"/&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="test-then-set"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server will test and then set if no errors.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="set"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server will set without a test first.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="test-only"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server will only test and not set, even
+if there are no errors.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="test-then-set"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The test option to use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="error-option"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="stop-on-error"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server will stop on errors.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="continue-on-error"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server may continue on errors.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="rollback-on-error"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The server will roll back on errors.
+This value can only be used if the 'rollback-on-error'
+feature is supported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="stop-on-error"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The error option to use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="edit-content"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The content for the edit operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;anyxml name="config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Inline Config content.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;leaf name="url"&gt;
+ &lt;if-feature name="url"/&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;URL-based config content.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="copy-config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Create or replace an entire configuration datastore with the
+contents of another complete configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.3&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="target"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to copy to.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-target"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration target of the copy operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;if-feature name="writable-running"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config target.
+This is optional-to-implement on the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="url"&gt;
+ &lt;if-feature name="url"/&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The URL-based configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;container name="source"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to copy from.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-source"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration source for the copy operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="url"&gt;
+ &lt;if-feature name="url"/&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The URL-based configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;anyxml name="config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Inline Config content: &amp;lt;config&amp;gt; element. Represents
+an entire configuration datastore, not
+a subset of the running datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="delete-config"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Delete a configuration datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.4&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="target"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to delete.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-target"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration target to delete.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="url"&gt;
+ &lt;if-feature name="url"/&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The URL-based configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="lock"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The lock operation allows the client to lock the configuration
+system of a device.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.5&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="target"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to lock.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-target"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration target to lock.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="unlock"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The unlock operation is used to release a configuration lock,
+previously obtained with the 'lock' operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.6&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="target"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to unlock.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-target"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration target to unlock.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config target.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="get"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Retrieve running configuration and device state information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.7&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;anyxml name="filter"&gt;
+ &lt;nc:get-filter-element-attributes/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This parameter specifies the portion of the system
+configuration and state data to retrieve.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;anyxml name="data"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Copy of the running datastore subset and/or state
+data that matched the filter criteria (if any).
+An empty data container indicates that the request did not
+produce any results.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/output&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="close-session"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request graceful termination of a NETCONF session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.8&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="kill-session"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Force the termination of a NETCONF session.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 7.9&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;leaf name="session-id"&gt;
+ &lt;type name="session-id-type"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular session to kill.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="commit"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Commit the candidate configuration as the device's new
+current configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;leaf name="confirmed"&gt;
+ &lt;if-feature name="confirmed-commit"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Requests a confirmed commit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="confirm-timeout"&gt;
+ &lt;if-feature name="confirmed-commit"/&gt;
+ &lt;type name="uint32"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="600"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The timeout interval for a confirmed commit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="persist"&gt;
+ &lt;if-feature name="confirmed-commit"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This parameter is used to make a confirmed commit
+persistent. A persistent confirmed commit is not aborted
+if the NETCONF session terminates. The only way to abort
+a persistent confirmed commit is to let the timer expire,
+or to use the &amp;lt;cancel-commit&amp;gt; operation.
+
+The value of this parameter is a token that must be given
+in the 'persist-id' parameter of &amp;lt;commit&amp;gt; or
+&amp;lt;cancel-commit&amp;gt; operations in order to confirm or cancel
+the persistent confirmed commit.
+
+The token should be a random string.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="persist-id"&gt;
+ &lt;if-feature name="confirmed-commit"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This parameter is given in order to commit a persistent
+confirmed commit. The value must be equal to the value
+given in the 'persist' parameter to the &amp;lt;commit&amp;gt; operation.
+If it does not match, the operation fails with an
+'invalid-value' error.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="discard-changes"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Revert the candidate configuration to the current
+running configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.3.4.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="cancel-commit"&gt;
+ &lt;if-feature name="confirmed-commit"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This operation is used to cancel an ongoing confirmed commit.
+If the confirmed commit is persistent, the parameter
+'persist-id' must be given, and it must match the value of the
+'persist' parameter.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.4.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;leaf name="persist-id"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This parameter is given in order to cancel a persistent
+confirmed commit. The value must be equal to the value
+given in the 'persist' parameter to the &amp;lt;commit&amp;gt; operation.
+If it does not match, the operation fails with an
+'invalid-value' error.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="validate"&gt;
+ &lt;if-feature name="validate"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Validates the contents of the specified configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6241, Section 8.6.4.1&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;input&gt;
+ &lt;container name="source"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Particular configuration to validate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="config-source"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The configuration source to validate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="candidate"&gt;
+ &lt;if-feature name="candidate"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The candidate configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="running"&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The running configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="startup"&gt;
+ &lt;if-feature name="startup"/&gt;
+ &lt;type name="empty"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The startup configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="url"&gt;
+ &lt;if-feature name="url"/&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The URL-based configuration is the config source.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;anyxml name="config"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Inline Config content: &amp;lt;config&amp;gt; element. Represents
+an entire configuration datastore, not
+a subset of the running datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yang
new file mode 100644
index 00000000..e7393114
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yang
@@ -0,0 +1,171 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-ssh-server {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server";
+ prefix sshs;
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ import ietf-keystore {
+ prefix ks;
+ reference
+ "RFC YYYY: Keystore Model";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Mahesh Jethanandani
+ &lt;mailto:mjethanandani@gmail.com&gt;
+
+ Editor: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;";
+ description
+ "This module defines a reusable grouping for a SSH server that
+ can be used as a basis for specific SSH server instances.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2016-11-02 {
+ description
+ "Initial version";
+ reference
+ "RFC XXXX: SSH Client and Server Models";
+ }
+
+ feature ssh-x509-certs {
+ description
+ "The ssh-x509-certs feature indicates that the NETCONF
+ server supports RFC 6187";
+ reference
+ "RFC 6187: X.509v3 Certificates for Secure Shell
+ Authentication";
+ }
+
+ grouping non-listening-ssh-server-grouping {
+ description
+ "A reusable grouping for a SSH server that can be used as a
+ basis for specific SSH server instances.";
+ container host-keys {
+ description
+ "The list of host-keys the SSH server will present when
+ establishing a SSH connection.";
+ list host-key {
+ key "name";
+ min-elements 1;
+ ordered-by user;
+ description
+ "An ordered list of host keys the SSH server will use to
+ construct its ordered list of algorithms, when sending
+ its SSH_MSG_KEXINIT message, as defined in Section 7.1
+ of RFC 4253.";
+ reference
+ "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for this host-key";
+ }
+
+ choice host-key-type {
+ mandatory true;
+ description
+ "The type of host key being specified";
+ leaf public-key {
+ type leafref {
+ path "/ks:keystore/ks:private-keys/ks:private-key/ks:name";
+ }
+ description
+ "The public key is actually identified by the name of
+ its cooresponding private-key in the keystore.";
+ }
+
+ leaf certificate {
+ if-feature "ssh-x509-certs";
+ type leafref {
+ path "/ks:keystore/ks:private-keys/ks:private-key/ks:certificate-chains/ks:certificate-chain/ks:name";
+ }
+ description
+ "The name of a certificate in the keystore.";
+ }
+ }
+ }
+ }
+
+ container client-cert-auth {
+ if-feature "ssh-x509-certs";
+ description
+ "A reference to a list of trusted certificate authority (CA)
+ certificates and a reference to a list of trusted client
+ certificates.";
+ leaf trusted-ca-certs {
+ type leafref {
+ path "/ks:keystore/ks:trusted-certificates/ks:name";
+ }
+ description
+ "A reference to a list of certificate authority (CA)
+ certificates used by the SSH server to authenticate
+ SSH client certificates.";
+ }
+
+ leaf trusted-client-certs {
+ type leafref {
+ path "/ks:keystore/ks:trusted-certificates/ks:name";
+ }
+ description
+ "A reference to a list of client certificates used by
+ the SSH server to authenticate SSH client certificates.
+ A clients certificate is authenticated if it is an
+ exact match to a configured trusted client certificate.";
+ }
+ }
+ }
+
+ grouping listening-ssh-server-grouping {
+ description
+ "A reusable grouping for a SSH server that can be used as a
+ basis for specific SSH server instances.";
+ leaf address {
+ type inet:ip-address;
+ description
+ "The IP address of the interface to listen on. The SSH
+ server will listen on all interfaces if no value is
+ specified. Please note that some addresses have special
+ meanings (e.g., '0.0.0.0' and '::').";
+ }
+
+ leaf port {
+ type inet:port-number;
+ description
+ "The local port number on this interface the SSH server
+ listens on. When this grouping is used, it is RECOMMENED
+ that refine statement is used to either set a default port
+ value or to set mandatory true.";
+ }
+
+ uses non-listening-ssh-server-grouping;
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yin
new file mode 100644
index 00000000..e57fcd32
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-ssh-server@2016-11-02.yin
@@ -0,0 +1,186 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-ssh-server"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:sshs="urn:ietf:params:xml:ns:yang:ietf-ssh-server"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:ks="urn:ietf:params:xml:ns:yang:ietf-keystore"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-ssh-server"/&gt;
+ &lt;prefix value="sshs"/&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-keystore"&gt;
+ &lt;prefix value="ks"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: Keystore Model&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Mahesh Jethanandani
+ &amp;lt;mailto:mjethanandani@gmail.com&amp;gt;
+
+Editor: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module defines a reusable grouping for a SSH server that
+can be used as a basis for specific SSH server instances.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC XXXX; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2016-11-02"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC XXXX: SSH Client and Server Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="ssh-x509-certs"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The ssh-x509-certs feature indicates that the NETCONF
+server supports RFC 6187&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6187: X.509v3 Certificates for Secure Shell
+Authentication&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;grouping name="non-listening-ssh-server-grouping"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reusable grouping for a SSH server that can be used as a
+basis for specific SSH server instances.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="host-keys"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of host-keys the SSH server will present when
+establishing a SSH connection.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="host-key"&gt;
+ &lt;key value="name"/&gt;
+ &lt;min-elements value="1"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An ordered list of host keys the SSH server will use to
+construct its ordered list of algorithms, when sending
+its SSH_MSG_KEXINIT message, as defined in Section 7.1
+of RFC 4253.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4253: The Secure Shell (SSH) Transport Layer Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for this host-key&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="host-key-type"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The type of host key being specified&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="public-key"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:private-keys/ks:private-key/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The public key is actually identified by the name of
+its cooresponding private-key in the keystore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="certificate"&gt;
+ &lt;if-feature name="ssh-x509-certs"/&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:private-keys/ks:private-key/ks:certificate-chains/ks:certificate-chain/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of a certificate in the keystore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/choice&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="client-cert-auth"&gt;
+ &lt;if-feature name="ssh-x509-certs"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of trusted certificate authority (CA)
+certificates and a reference to a list of trusted client
+certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="trusted-ca-certs"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:trusted-certificates/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of certificate authority (CA)
+certificates used by the SSH server to authenticate
+SSH client certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="trusted-client-certs"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:trusted-certificates/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of client certificates used by
+the SSH server to authenticate SSH client certificates.
+A clients certificate is authenticated if it is an
+exact match to a configured trusted client certificate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="listening-ssh-server-grouping"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reusable grouping for a SSH server that can be used as a
+basis for specific SSH server instances.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:ip-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IP address of the interface to listen on. The SSH
+server will listen on all interfaces if no value is
+specified. Please note that some addresses have special
+meanings (e.g., '0.0.0.0' and '::').&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="port"&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The local port number on this interface the SSH server
+listens on. When this grouping is used, it is RECOMMENED
+that refine statement is used to either set a default port
+value or to set mandatory true.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="non-listening-ssh-server-grouping"/&gt;
+ &lt;/grouping&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yang
new file mode 100644
index 00000000..3b1ff6da
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yang
@@ -0,0 +1,779 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="<MID>">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-system {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-system";
+ prefix sys;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ import ietf-netconf-acm {
+ prefix nacm;
+ }
+
+ import iana-crypt-hash {
+ prefix ianach;
+ }
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: Thomas Nadeau
+ &lt;mailto:tnadeau@lucidvision.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Andy Bierman
+ &lt;mailto:andy@yumaworks.com&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;";
+ description
+ "This module contains a collection of YANG definitions for the
+ configuration and identification of some common system
+ properties within a device containing a NETCONF server. This
+ includes data node definitions for system identification,
+ time-of-day management, user management, DNS resolver
+ configuration, and some protocol operations for system
+ management.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 7317; see
+ the RFC itself for full legal notices.";
+
+ revision 2014-08-06 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7317: A YANG Data Model for System Management";
+ }
+
+ feature radius {
+ description
+ "Indicates that the device can be configured as a RADIUS
+ client.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+ }
+
+ feature authentication {
+ description
+ "Indicates that the device supports configuration of
+ user authentication.";
+ }
+
+ feature local-users {
+ if-feature "authentication";
+ description
+ "Indicates that the device supports configuration of
+ local user authentication.";
+ }
+
+ feature radius-authentication {
+ if-feature "radius";
+ if-feature "authentication";
+ description
+ "Indicates that the device supports configuration of user
+ authentication over RADIUS.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+ RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+ Authorization for Network Access Server (NAS)
+ Management";
+ }
+
+ feature ntp {
+ description
+ "Indicates that the device can be configured to use one or
+ more NTP servers to set the system date and time.";
+ }
+
+ feature ntp-udp-port {
+ if-feature "ntp";
+ description
+ "Indicates that the device supports the configuration of
+ the UDP port for NTP servers.
+
+ This is a 'feature', since many implementations do not support
+ any port other than the default port.";
+ }
+
+ feature timezone-name {
+ description
+ "Indicates that the local time zone on the device
+ can be configured to use the TZ database
+ to set the time zone and manage daylight saving time.";
+ reference
+ "RFC 6557: Procedures for Maintaining the Time Zone Database";
+ }
+
+ feature dns-udp-tcp-port {
+ description
+ "Indicates that the device supports the configuration of
+ the UDP and TCP port for DNS servers.
+
+ This is a 'feature', since many implementations do not support
+ any port other than the default port.";
+ }
+
+ identity authentication-method {
+ description
+ "Base identity for user authentication methods.";
+ }
+
+ identity radius {
+ base authentication-method;
+ description
+ "Indicates user authentication using RADIUS.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+ RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+ Authorization for Network Access Server (NAS)
+ Management";
+ }
+
+ identity local-users {
+ base authentication-method;
+ description
+ "Indicates password-based authentication of locally
+ configured users.";
+ }
+
+ identity radius-authentication-type {
+ description
+ "Base identity for RADIUS authentication types.";
+ }
+
+ identity radius-pap {
+ base radius-authentication-type;
+ description
+ "The device requests Password Authentication Protocol (PAP)
+ authentication from the RADIUS server.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+ }
+
+ identity radius-chap {
+ base radius-authentication-type;
+ description
+ "The device requests Challenge Handshake Authentication
+ Protocol (CHAP) authentication from the RADIUS server.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
+ }
+
+ typedef timezone-name {
+ type string;
+ description
+ "A time zone name as used by the Time Zone Database,
+ sometimes referred to as the 'Olson Database'.
+
+ The exact set of valid values is an implementation-specific
+ matter. Client discovery of the exact set of time zone names
+ for a particular server is out of scope.";
+ reference
+ "RFC 6557: Procedures for Maintaining the Time Zone Database";
+ }
+
+ container system {
+ description
+ "System group configuration.";
+ leaf contact {
+ type string;
+ description
+ "The administrator contact information for the system.
+
+ A server implementation MAY map this leaf to the sysContact
+ MIB object. Such an implementation needs to use some
+ mechanism to handle the differences in size and characters
+ allowed between this leaf and sysContact. The definition of
+ such a mechanism is outside the scope of this document.";
+ reference
+ "RFC 3418: Management Information Base (MIB) for the
+ Simple Network Management Protocol (SNMP)
+ SNMPv2-MIB.sysContact";
+ }
+
+ leaf hostname {
+ type inet:domain-name;
+ description
+ "The name of the host. This name can be a single domain
+ label or the fully qualified domain name of the host.";
+ }
+
+ leaf location {
+ type string;
+ description
+ "The system location.
+
+ A server implementation MAY map this leaf to the sysLocation
+ MIB object. Such an implementation needs to use some
+ mechanism to handle the differences in size and characters
+ allowed between this leaf and sysLocation. The definition
+ of such a mechanism is outside the scope of this document.";
+ reference
+ "RFC 3418: Management Information Base (MIB) for the
+ Simple Network Management Protocol (SNMP)
+ SNMPv2-MIB.sysLocation";
+ }
+
+ container clock {
+ description
+ "Configuration of the system date and time properties.";
+ choice timezone {
+ description
+ "The system time zone information.";
+ case timezone-name {
+ if-feature "timezone-name";
+ leaf timezone-name {
+ type timezone-name;
+ description
+ "The TZ database name to use for the system, such
+ as 'Europe/Stockholm'.";
+ }
+ }
+
+ case timezone-utc-offset {
+ leaf timezone-utc-offset {
+ type int16 {
+ range "-1500 .. 1500";
+ }
+ units "minutes";
+ description
+ "The number of minutes to add to UTC time to
+ identify the time zone for this system. For example,
+ 'UTC - 8:00 hours' would be represented as '-480'.
+ Note that automatic daylight saving time adjustment
+ is not provided if this object is used.";
+ }
+ }
+ }
+ }
+
+ container ntp {
+ if-feature "ntp";
+ presence "Enables the NTP client unless the 'enabled' leaf
+ (which defaults to 'true') is set to 'false'";
+ description
+ "Configuration of the NTP client.";
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "Indicates that the system should attempt to
+ synchronize the system clock with an NTP server
+ from the 'ntp/server' list.";
+ }
+
+ list server {
+ key "name";
+ description
+ "List of NTP servers to use for system clock
+ synchronization. If '/system/ntp/enabled'
+ is 'true', then the system will attempt to
+ contact and utilize the specified NTP servers.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the NTP server.";
+ }
+
+ choice transport {
+ mandatory true;
+ description
+ "The transport-protocol-specific parameters for this
+ server.";
+ case udp {
+ container udp {
+ description
+ "Contains UDP-specific configuration parameters
+ for NTP.";
+ leaf address {
+ type inet:host;
+ mandatory true;
+ description
+ "The address of the NTP server.";
+ }
+
+ leaf port {
+ if-feature "ntp-udp-port";
+ type inet:port-number;
+ default "123";
+ description
+ "The port number of the NTP server.";
+ }
+ }
+ }
+ }
+
+ leaf association-type {
+ type enumeration {
+ enum "server" {
+ description
+ "Use client association mode. This device
+ will not provide synchronization to the
+ configured NTP server.";
+ }
+ enum "peer" {
+ description
+ "Use symmetric active association mode.
+ This device may provide synchronization
+ to the configured NTP server.";
+ }
+ enum "pool" {
+ description
+ "Use client association mode with one or
+ more of the NTP servers found by DNS
+ resolution of the domain name given by
+ the 'address' leaf. This device will not
+ provide synchronization to the servers.";
+ }
+ }
+ default "server";
+ description
+ "The desired association type for this NTP server.";
+ }
+
+ leaf iburst {
+ type boolean;
+ default "false";
+ description
+ "Indicates whether this server should enable burst
+ synchronization or not.";
+ }
+
+ leaf prefer {
+ type boolean;
+ default "false";
+ description
+ "Indicates whether this server should be preferred
+ or not.";
+ }
+ }
+ }
+
+ container dns-resolver {
+ description
+ "Configuration of the DNS resolver.";
+ leaf-list search {
+ type inet:domain-name;
+ ordered-by user;
+ description
+ "An ordered list of domains to search when resolving
+ a host name.";
+ }
+
+ list server {
+ key "name";
+ ordered-by user;
+ description
+ "List of the DNS servers that the resolver should query.
+
+ When the resolver is invoked by a calling application, it
+ sends the query to the first name server in this list. If
+ no response has been received within 'timeout' seconds,
+ the resolver continues with the next server in the list.
+ If no response is received from any server, the resolver
+ continues with the first server again. When the resolver
+ has traversed the list 'attempts' times without receiving
+ any response, it gives up and returns an error to the
+ calling application.
+
+ Implementations MAY limit the number of entries in this
+ list.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the DNS server.";
+ }
+
+ choice transport {
+ mandatory true;
+ description
+ "The transport-protocol-specific parameters for this
+ server.";
+ case udp-and-tcp {
+ container udp-and-tcp {
+ description
+ "Contains UDP- and TCP-specific configuration
+ parameters for DNS.";
+ reference
+ "RFC 1035: Domain Names - Implementation and
+ Specification
+ RFC 5966: DNS Transport over TCP - Implementation
+ Requirements";
+ leaf address {
+ type inet:ip-address;
+ mandatory true;
+ description
+ "The address of the DNS server.";
+ }
+
+ leaf port {
+ if-feature "dns-udp-tcp-port";
+ type inet:port-number;
+ default "53";
+ description
+ "The UDP and TCP port number of the DNS server.";
+ }
+ }
+ }
+ }
+ }
+
+ container options {
+ description
+ "Resolver options. The set of available options has been
+ limited to those that are generally available across
+ different resolver implementations and generally useful.";
+ leaf timeout {
+ type uint8 {
+ range "1..max";
+ }
+ units "seconds";
+ default "5";
+ description
+ "The amount of time the resolver will wait for a
+ response from each remote name server before
+ retrying the query via a different name server.";
+ }
+
+ leaf attempts {
+ type uint8 {
+ range "1..max";
+ }
+ default "2";
+ description
+ "The number of times the resolver will send a query to
+ all of its name servers before giving up and returning
+ an error to the calling application.";
+ }
+ }
+ }
+
+ container radius {
+ if-feature "radius";
+ description
+ "Configuration of the RADIUS client.";
+ list server {
+ key "name";
+ ordered-by user;
+ description
+ "List of RADIUS servers used by the device.
+
+ When the RADIUS client is invoked by a calling
+ application, it sends the query to the first server in
+ this list. If no response has been received within
+ 'timeout' seconds, the client continues with the next
+ server in the list. If no response is received from any
+ server, the client continues with the first server again.
+ When the client has traversed the list 'attempts' times
+ without receiving any response, it gives up and returns an
+ error to the calling application.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the RADIUS server.";
+ }
+
+ choice transport {
+ mandatory true;
+ description
+ "The transport-protocol-specific parameters for this
+ server.";
+ case udp {
+ container udp {
+ description
+ "Contains UDP-specific configuration parameters
+ for RADIUS.";
+ leaf address {
+ type inet:host;
+ mandatory true;
+ description
+ "The address of the RADIUS server.";
+ }
+
+ leaf authentication-port {
+ type inet:port-number;
+ default "1812";
+ description
+ "The port number of the RADIUS server.";
+ }
+
+ leaf shared-secret {
+ nacm:default-deny-all;
+ type string;
+ mandatory true;
+ description
+ "The shared secret, which is known to both the
+ RADIUS client and server.";
+ reference
+ "RFC 2865: Remote Authentication Dial In User
+ Service (RADIUS)";
+ }
+ }
+ }
+ }
+
+ leaf authentication-type {
+ type identityref {
+ base radius-authentication-type;
+ }
+ default "radius-pap";
+ description
+ "The authentication type requested from the RADIUS
+ server.";
+ }
+ }
+
+ container options {
+ description
+ "RADIUS client options.";
+ leaf timeout {
+ type uint8 {
+ range "1..max";
+ }
+ units "seconds";
+ default "5";
+ description
+ "The number of seconds the device will wait for a
+ response from each RADIUS server before trying with a
+ different server.";
+ }
+
+ leaf attempts {
+ type uint8 {
+ range "1..max";
+ }
+ default "2";
+ description
+ "The number of times the device will send a query to
+ all of its RADIUS servers before giving up.";
+ }
+ }
+ }
+
+ container authentication {
+ nacm:default-deny-write;
+ if-feature "authentication";
+ description
+ "The authentication configuration subtree.";
+ leaf-list user-authentication-order {
+ type identityref {
+ base authentication-method;
+ }
+ must "(. != \"sys:radius\" or ../../radius/server)" {
+ error-message
+ "When 'radius' is used, a RADIUS server must be configured.";
+ description
+ "When 'radius' is used as an authentication method,
+ a RADIUS server must be configured.";
+ }
+ ordered-by user;
+ description
+ "When the device authenticates a user with a password,
+ it tries the authentication methods in this leaf-list in
+ order. If authentication with one method fails, the next
+ method is used. If no method succeeds, the user is
+ denied access.
+
+ An empty user-authentication-order leaf-list still allows
+ authentication of users using mechanisms that do not
+ involve a password.
+
+ If the 'radius-authentication' feature is advertised by
+ the NETCONF server, the 'radius' identity can be added to
+ this list.
+
+ If the 'local-users' feature is advertised by the
+ NETCONF server, the 'local-users' identity can be
+ added to this list.";
+ }
+
+ list user {
+ if-feature "local-users";
+ key "name";
+ description
+ "The list of local users configured on this device.";
+ leaf name {
+ type string;
+ description
+ "The user name string identifying this entry.";
+ }
+
+ leaf password {
+ type ianach:crypt-hash;
+ description
+ "The password for this entry.";
+ }
+
+ list authorized-key {
+ key "name";
+ description
+ "A list of public SSH keys for this user. These keys
+ are allowed for SSH authentication, as described in
+ RFC 4253.";
+ reference
+ "RFC 4253: The Secure Shell (SSH) Transport Layer
+ Protocol";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name for the SSH key.";
+ }
+
+ leaf algorithm {
+ type string;
+ mandatory true;
+ description
+ "The public key algorithm name for this SSH key.
+
+ Valid values are the values in the IANA 'Secure Shell
+ (SSH) Protocol Parameters' registry, Public Key
+ Algorithm Names.";
+ reference
+ "IANA 'Secure Shell (SSH) Protocol Parameters'
+ registry, Public Key Algorithm Names";
+ }
+
+ leaf key-data {
+ type binary;
+ mandatory true;
+ description
+ "The binary public key data for this SSH key, as
+ specified by RFC 4253, Section 6.6, i.e.:
+
+ string certificate or public key format
+ identifier
+ byte[n] key/certificate data.";
+ reference
+ "RFC 4253: The Secure Shell (SSH) Transport Layer
+ Protocol";
+ }
+ }
+ }
+ }
+ }
+
+ container system-state {
+ config false;
+ description
+ "System group operational state.";
+ container platform {
+ description
+ "Contains vendor-specific information for
+ identifying the system platform and operating system.";
+ reference
+ "IEEE Std 1003.1-2008 - sys/utsname.h";
+ leaf os-name {
+ type string;
+ description
+ "The name of the operating system in use -
+ for example, 'Linux'.";
+ reference
+ "IEEE Std 1003.1-2008 - utsname.sysname";
+ }
+
+ leaf os-release {
+ type string;
+ description
+ "The current release level of the operating
+ system in use. This string MAY indicate
+ the OS source code revision.";
+ reference
+ "IEEE Std 1003.1-2008 - utsname.release";
+ }
+
+ leaf os-version {
+ type string;
+ description
+ "The current version level of the operating
+ system in use. This string MAY indicate
+ the specific OS build date and target variant
+ information.";
+ reference
+ "IEEE Std 1003.1-2008 - utsname.version";
+ }
+
+ leaf machine {
+ type string;
+ description
+ "A vendor-specific identifier string representing
+ the hardware in use.";
+ reference
+ "IEEE Std 1003.1-2008 - utsname.machine";
+ }
+ }
+
+ container clock {
+ description
+ "Monitoring of the system date and time properties.";
+ leaf current-datetime {
+ type yang:date-and-time;
+ description
+ "The current system date and time.";
+ }
+
+ leaf boot-datetime {
+ type yang:date-and-time;
+ description
+ "The system date and time when the system last restarted.";
+ }
+ }
+ }
+
+ rpc set-current-datetime {
+ nacm:default-deny-all;
+ description
+ "Set the /system-state/clock/current-datetime leaf
+ to the specified value.
+
+ If the system is using NTP (i.e., /system/ntp/enabled
+ is set to 'true'), then this operation will fail with
+ error-tag 'operation-failed' and error-app-tag value of
+ 'ntp-active'.";
+ input {
+ leaf current-datetime {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "The current system date and time.";
+ }
+ }
+ }
+
+ rpc system-restart {
+ nacm:default-deny-all;
+ description
+ "Request that the entire system be restarted immediately.
+ A server SHOULD send an rpc reply to the client before
+ restarting the system.";
+ }
+
+ rpc system-shutdown {
+ nacm:default-deny-all;
+ description
+ "Request that the entire system be shut down immediately.
+ A server SHOULD send an rpc reply to the client before
+ shutting down the system.";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yin
new file mode 100644
index 00000000..45ef3e51
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-system@2014-08-06.yin
@@ -0,0 +1,833 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-system"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:sys="urn:ietf:params:xml:ns:yang:ietf-system"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:nacm="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"
+ xmlns:ianach="urn:ietf:params:xml:ns:yang:iana-crypt-hash"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-system"/&gt;
+ &lt;prefix value="sys"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-netconf-acm"&gt;
+ &lt;prefix value="nacm"/&gt;
+ &lt;/import&gt;
+ &lt;import module="iana-crypt-hash"&gt;
+ &lt;prefix value="ianach"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: Thomas Nadeau
+ &amp;lt;mailto:tnadeau@lucidvision.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Andy Bierman
+ &amp;lt;mailto:andy@yumaworks.com&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of YANG definitions for the
+configuration and identification of some common system
+properties within a device containing a NETCONF server. This
+includes data node definitions for system identification,
+time-of-day management, user management, DNS resolver
+configuration, and some protocol operations for system
+management.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 7317; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2014-08-06"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7317: A YANG Data Model for System Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;feature name="radius"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device can be configured as a RADIUS
+client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User Service (RADIUS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="authentication"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports configuration of
+user authentication.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="local-users"&gt;
+ &lt;if-feature name="authentication"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports configuration of
+local user authentication.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="radius-authentication"&gt;
+ &lt;if-feature name="radius"/&gt;
+ &lt;if-feature name="authentication"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports configuration of user
+authentication over RADIUS.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+ Authorization for Network Access Server (NAS)
+ Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="ntp"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device can be configured to use one or
+more NTP servers to set the system date and time.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="ntp-udp-port"&gt;
+ &lt;if-feature name="ntp"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports the configuration of
+the UDP port for NTP servers.
+
+This is a 'feature', since many implementations do not support
+any port other than the default port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;feature name="timezone-name"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the local time zone on the device
+can be configured to use the TZ database
+to set the time zone and manage daylight saving time.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6557: Procedures for Maintaining the Time Zone Database&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/feature&gt;
+ &lt;feature name="dns-udp-tcp-port"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the device supports the configuration of
+the UDP and TCP port for DNS servers.
+
+This is a 'feature', since many implementations do not support
+any port other than the default port.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/feature&gt;
+ &lt;identity name="authentication-method"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity for user authentication methods.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radius"&gt;
+ &lt;base name="authentication-method"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates user authentication using RADIUS.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User Service (RADIUS)
+RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
+ Authorization for Network Access Server (NAS)
+ Management&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="local-users"&gt;
+ &lt;base name="authentication-method"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates password-based authentication of locally
+configured users.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radius-authentication-type"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity for RADIUS authentication types.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radius-pap"&gt;
+ &lt;base name="radius-authentication-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The device requests Password Authentication Protocol (PAP)
+authentication from the RADIUS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User Service (RADIUS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="radius-chap"&gt;
+ &lt;base name="radius-authentication-type"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The device requests Challenge Handshake Authentication
+Protocol (CHAP) authentication from the RADIUS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User Service (RADIUS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;typedef name="timezone-name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A time zone name as used by the Time Zone Database,
+sometimes referred to as the 'Olson Database'.
+
+The exact set of valid values is an implementation-specific
+matter. Client discovery of the exact set of time zone names
+for a particular server is out of scope.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6557: Procedures for Maintaining the Time Zone Database&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;container name="system"&gt;
+ &lt;description&gt;
+ &lt;text&gt;System group configuration.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="contact"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The administrator contact information for the system.
+
+A server implementation MAY map this leaf to the sysContact
+MIB object. Such an implementation needs to use some
+mechanism to handle the differences in size and characters
+allowed between this leaf and sysContact. The definition of
+such a mechanism is outside the scope of this document.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3418: Management Information Base (MIB) for the
+ Simple Network Management Protocol (SNMP)
+ SNMPv2-MIB.sysContact&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="hostname"&gt;
+ &lt;type name="inet:domain-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the host. This name can be a single domain
+label or the fully qualified domain name of the host.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="location"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The system location.
+
+A server implementation MAY map this leaf to the sysLocation
+MIB object. Such an implementation needs to use some
+mechanism to handle the differences in size and characters
+allowed between this leaf and sysLocation. The definition
+of such a mechanism is outside the scope of this document.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3418: Management Information Base (MIB) for the
+ Simple Network Management Protocol (SNMP)
+ SNMPv2-MIB.sysLocation&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;container name="clock"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configuration of the system date and time properties.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;choice name="timezone"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The system time zone information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="timezone-name"&gt;
+ &lt;if-feature name="timezone-name"/&gt;
+ &lt;leaf name="timezone-name"&gt;
+ &lt;type name="timezone-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The TZ database name to use for the system, such
+as 'Europe/Stockholm'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/case&gt;
+ &lt;case name="timezone-utc-offset"&gt;
+ &lt;leaf name="timezone-utc-offset"&gt;
+ &lt;type name="int16"&gt;
+ &lt;range value="-1500 .. 1500"/&gt;
+ &lt;/type&gt;
+ &lt;units name="minutes"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of minutes to add to UTC time to
+identify the time zone for this system. For example,
+'UTC - 8:00 hours' would be represented as '-480'.
+Note that automatic daylight saving time adjustment
+is not provided if this object is used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;/container&gt;
+ &lt;container name="ntp"&gt;
+ &lt;if-feature name="ntp"/&gt;
+ &lt;presence value="Enables the NTP client unless the 'enabled' leaf
+(which defaults to 'true') is set to 'false'"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configuration of the NTP client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="enabled"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the system should attempt to
+synchronize the system clock with an NTP server
+from the 'ntp/server' list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="server"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of NTP servers to use for system clock
+synchronization. If '/system/ntp/enabled'
+is 'true', then the system will attempt to
+contact and utilize the specified NTP servers.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="transport"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The transport-protocol-specific parameters for this
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="udp"&gt;
+ &lt;container name="udp"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains UDP-specific configuration parameters
+for NTP.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:host"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address of the NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="port"&gt;
+ &lt;if-feature name="ntp-udp-port"/&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;default value="123"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The port number of the NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;leaf name="association-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="server"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Use client association mode. This device
+will not provide synchronization to the
+configured NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="peer"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Use symmetric active association mode.
+This device may provide synchronization
+to the configured NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="pool"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Use client association mode with one or
+more of the NTP servers found by DNS
+resolution of the domain name given by
+the 'address' leaf. This device will not
+provide synchronization to the servers.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;default value="server"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The desired association type for this NTP server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="iburst"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates whether this server should enable burst
+synchronization or not.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="prefer"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;default value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates whether this server should be preferred
+or not.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="dns-resolver"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configuration of the DNS resolver.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf-list name="search"&gt;
+ &lt;type name="inet:domain-name"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An ordered list of domains to search when resolving
+a host name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;list name="server"&gt;
+ &lt;key value="name"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of the DNS servers that the resolver should query.
+
+When the resolver is invoked by a calling application, it
+sends the query to the first name server in this list. If
+no response has been received within 'timeout' seconds,
+the resolver continues with the next server in the list.
+If no response is received from any server, the resolver
+continues with the first server again. When the resolver
+has traversed the list 'attempts' times without receiving
+any response, it gives up and returns an error to the
+calling application.
+
+Implementations MAY limit the number of entries in this
+list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the DNS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="transport"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The transport-protocol-specific parameters for this
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="udp-and-tcp"&gt;
+ &lt;container name="udp-and-tcp"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains UDP- and TCP-specific configuration
+parameters for DNS.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 1035: Domain Names - Implementation and
+ Specification
+RFC 5966: DNS Transport over TCP - Implementation
+ Requirements&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:ip-address"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address of the DNS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="port"&gt;
+ &lt;if-feature name="dns-udp-tcp-port"/&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;default value="53"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The UDP and TCP port number of the DNS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;/list&gt;
+ &lt;container name="options"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Resolver options. The set of available options has been
+limited to those that are generally available across
+different resolver implementations and generally useful.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="timeout"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="5"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The amount of time the resolver will wait for a
+response from each remote name server before
+retrying the query via a different name server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="attempts"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;default value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of times the resolver will send a query to
+all of its name servers before giving up and returning
+an error to the calling application.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;container name="radius"&gt;
+ &lt;if-feature name="radius"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Configuration of the RADIUS client.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="server"&gt;
+ &lt;key value="name"/&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of RADIUS servers used by the device.
+
+When the RADIUS client is invoked by a calling
+application, it sends the query to the first server in
+this list. If no response has been received within
+'timeout' seconds, the client continues with the next
+server in the list. If no response is received from any
+server, the client continues with the first server again.
+When the client has traversed the list 'attempts' times
+without receiving any response, it gives up and returns an
+error to the calling application.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the RADIUS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;choice name="transport"&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The transport-protocol-specific parameters for this
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;case name="udp"&gt;
+ &lt;container name="udp"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains UDP-specific configuration parameters
+for RADIUS.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:host"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The address of the RADIUS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="authentication-port"&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;default value="1812"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The port number of the RADIUS server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="shared-secret"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The shared secret, which is known to both the
+RADIUS client and server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2865: Remote Authentication Dial In User
+ Service (RADIUS)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/case&gt;
+ &lt;/choice&gt;
+ &lt;leaf name="authentication-type"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="radius-authentication-type"/&gt;
+ &lt;/type&gt;
+ &lt;default value="radius-pap"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The authentication type requested from the RADIUS
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;container name="options"&gt;
+ &lt;description&gt;
+ &lt;text&gt;RADIUS client options.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="timeout"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;units name="seconds"/&gt;
+ &lt;default value="5"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of seconds the device will wait for a
+response from each RADIUS server before trying with a
+different server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="attempts"&gt;
+ &lt;type name="uint8"&gt;
+ &lt;range value="1..max"/&gt;
+ &lt;/type&gt;
+ &lt;default value="2"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of times the device will send a query to
+all of its RADIUS servers before giving up.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;container name="authentication"&gt;
+ &lt;nacm:default-deny-write/&gt;
+ &lt;if-feature name="authentication"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The authentication configuration subtree.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf-list name="user-authentication-order"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="authentication-method"/&gt;
+ &lt;/type&gt;
+ &lt;must condition="(. != &amp;quot;sys:radius&amp;quot; or ../../radius/server)"&gt;
+ &lt;error-message&gt;
+ &lt;value&gt;When 'radius' is used, a RADIUS server must be configured.&lt;/value&gt;
+ &lt;/error-message&gt;
+ &lt;description&gt;
+ &lt;text&gt;When 'radius' is used as an authentication method,
+a RADIUS server must be configured.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/must&gt;
+ &lt;ordered-by value="user"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;When the device authenticates a user with a password,
+it tries the authentication methods in this leaf-list in
+order. If authentication with one method fails, the next
+method is used. If no method succeeds, the user is
+denied access.
+
+An empty user-authentication-order leaf-list still allows
+authentication of users using mechanisms that do not
+involve a password.
+
+If the 'radius-authentication' feature is advertised by
+the NETCONF server, the 'radius' identity can be added to
+this list.
+
+If the 'local-users' feature is advertised by the
+NETCONF server, the 'local-users' identity can be
+added to this list.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;list name="user"&gt;
+ &lt;if-feature name="local-users"/&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of local users configured on this device.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The user name string identifying this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="password"&gt;
+ &lt;type name="ianach:crypt-hash"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The password for this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="authorized-key"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A list of public SSH keys for this user. These keys
+are allowed for SSH authentication, as described in
+RFC 4253.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4253: The Secure Shell (SSH) Transport Layer
+ Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary name for the SSH key.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="algorithm"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The public key algorithm name for this SSH key.
+
+Valid values are the values in the IANA 'Secure Shell
+(SSH) Protocol Parameters' registry, Public Key
+Algorithm Names.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IANA 'Secure Shell (SSH) Protocol Parameters'
+registry, Public Key Algorithm Names&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="key-data"&gt;
+ &lt;type name="binary"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The binary public key data for this SSH key, as
+specified by RFC 4253, Section 6.6, i.e.:
+
+ string certificate or public key format
+ identifier
+ byte[n] key/certificate data.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4253: The Secure Shell (SSH) Transport Layer
+ Protocol&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;container name="system-state"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;System group operational state.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="platform"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains vendor-specific information for
+identifying the system platform and operating system.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - sys/utsname.h&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="os-name"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the operating system in use -
+for example, 'Linux'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - utsname.sysname&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="os-release"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The current release level of the operating
+system in use. This string MAY indicate
+the OS source code revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - utsname.release&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="os-version"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The current version level of the operating
+system in use. This string MAY indicate
+the specific OS build date and target variant
+information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - utsname.version&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="machine"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A vendor-specific identifier string representing
+the hardware in use.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE Std 1003.1-2008 - utsname.machine&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;container name="clock"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Monitoring of the system date and time properties.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="current-datetime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The current system date and time.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="boot-datetime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The system date and time when the system last restarted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;rpc name="set-current-datetime"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Set the /system-state/clock/current-datetime leaf
+to the specified value.
+
+If the system is using NTP (i.e., /system/ntp/enabled
+is set to 'true'), then this operation will fail with
+error-tag 'operation-failed' and error-app-tag value of
+'ntp-active'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="current-datetime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The current system date and time.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="system-restart"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request that the entire system be restarted immediately.
+A server SHOULD send an rpc reply to the client before
+restarting the system.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="system-shutdown"&gt;
+ &lt;nacm:default-deny-all/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Request that the entire system be shut down immediately.
+A server SHOULD send an rpc reply to the client before
+shutting down the system.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/rpc&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yang
new file mode 100644
index 00000000..6a15a551
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yang
@@ -0,0 +1,141 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-tls-server {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-tls-server";
+ prefix tlss;
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ import ietf-keystore {
+ prefix ks;
+ reference
+ "RFC YYYY: Keystore Model";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ WG Chair: Mehmet Ersue
+ &lt;mailto:mehmet.ersue@nsn.com&gt;
+
+ WG Chair: Mahesh Jethanandani
+ &lt;mailto:mjethanandani@gmail.com&gt;
+
+ Editor: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;";
+ description
+ "This module defines a reusable grouping for a TLS server that
+ can be used as a basis for specific TLS server instances.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD
+ License set forth in Section 4.c of the IETF Trust's
+ Legal Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2016-11-02 {
+ description
+ "Initial version";
+ reference
+ "RFC XXXX: TLS Client and Server Models";
+ }
+
+ grouping non-listening-tls-server-grouping {
+ description
+ "A reusable grouping for a TLS server that can be used as a
+ basis for specific TLS server instances.";
+ container certificates {
+ description
+ "The list of certificates the TLS server will present when
+ establishing a TLS connection in its Certificate message,
+ as defined in Section 7.4.2 in RRC 5246.";
+ reference
+ "RFC 5246:
+ The Transport Layer Security (TLS) Protocol Version 1.2";
+ list certificate {
+ key "name";
+ min-elements 1;
+ description
+ "An unordered list of certificates the TLS server can pick
+ from when sending its Server Certificate message.";
+ reference
+ "RFC 5246: The TLS Protocol, Section 7.4.2";
+ leaf name {
+ type leafref {
+ path "/ks:keystore/ks:private-keys/ks:private-key/ks:certificate-chains/ks:certificate-chain/ks:name";
+ }
+ description
+ "The name of the certificate in the keystore.";
+ }
+ }
+ }
+
+ container client-auth {
+ description
+ "A reference to a list of trusted certificate authority (CA)
+ certificates and a reference to a list of trusted client
+ certificates.";
+ leaf trusted-ca-certs {
+ type leafref {
+ path "/ks:keystore/ks:trusted-certificates/ks:name";
+ }
+ description
+ "A reference to a list of certificate authority (CA)
+ certificates used by the TLS server to authenticate
+ TLS client certificates.";
+ }
+
+ leaf trusted-client-certs {
+ type leafref {
+ path "/ks:keystore/ks:trusted-certificates/ks:name";
+ }
+ description
+ "A reference to a list of client certificates used by
+ the TLS server to authenticate TLS client certificates.
+ A clients certificate is authenticated if it is an
+ exact match to a configured trusted client certificate.";
+ }
+ }
+ }
+
+ grouping listening-tls-server-grouping {
+ description
+ "A reusable grouping for a TLS server that can be used as a
+ basis for specific TLS server instances.";
+ leaf address {
+ type inet:ip-address;
+ description
+ "The IP address of the interface to listen on. The TLS
+ server will listen on all interfaces if no value is
+ specified. Please note that some addresses have special
+ meanings (e.g., '0.0.0.0' and '::').";
+ }
+
+ leaf port {
+ type inet:port-number;
+ description
+ "The local port number on this interface the TLS server
+ listens on. When this grouping is used, it is RECOMMENDED
+ that refine statement is used to either set a default port
+ value or to set mandatory true.";
+ }
+
+ uses non-listening-tls-server-grouping;
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yin
new file mode 100644
index 00000000..ee67095e
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-tls-server@2016-11-02.yin
@@ -0,0 +1,155 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-tls-server"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:tlss="urn:ietf:params:xml:ns:yang:ietf-tls-server"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:ks="urn:ietf:params:xml:ns:yang:ietf-keystore"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-tls-server"/&gt;
+ &lt;prefix value="tlss"/&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-keystore"&gt;
+ &lt;prefix value="ks"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC YYYY: Keystore Model&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+WG Chair: Mehmet Ersue
+ &amp;lt;mailto:mehmet.ersue@nsn.com&amp;gt;
+
+WG Chair: Mahesh Jethanandani
+ &amp;lt;mailto:mjethanandani@gmail.com&amp;gt;
+
+Editor: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module defines a reusable grouping for a TLS server that
+can be used as a basis for specific TLS server instances.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD
+License set forth in Section 4.c of the IETF Trust's
+Legal Provisions Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC XXXX; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2016-11-02"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial version&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC XXXX: TLS Client and Server Models&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;grouping name="non-listening-tls-server-grouping"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reusable grouping for a TLS server that can be used as a
+basis for specific TLS server instances.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="certificates"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of certificates the TLS server will present when
+establishing a TLS connection in its Certificate message,
+as defined in Section 7.4.2 in RRC 5246.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5246:
+ The Transport Layer Security (TLS) Protocol Version 1.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;list name="certificate"&gt;
+ &lt;key value="name"/&gt;
+ &lt;min-elements value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unordered list of certificates the TLS server can pick
+from when sending its Server Certificate message.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5246: The TLS Protocol, Section 7.4.2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:private-keys/ks:private-key/ks:certificate-chains/ks:certificate-chain/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the certificate in the keystore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="client-auth"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of trusted certificate authority (CA)
+certificates and a reference to a list of trusted client
+certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="trusted-ca-certs"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:trusted-certificates/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of certificate authority (CA)
+certificates used by the TLS server to authenticate
+TLS client certificates.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="trusted-client-certs"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/ks:keystore/ks:trusted-certificates/ks:name"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a list of client certificates used by
+the TLS server to authenticate TLS client certificates.
+A clients certificate is authenticated if it is an
+exact match to a configured trusted client certificate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="listening-tls-server-grouping"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reusable grouping for a TLS server that can be used as a
+basis for specific TLS server instances.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="address"&gt;
+ &lt;type name="inet:ip-address"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The IP address of the interface to listen on. The TLS
+server will listen on all interfaces if no value is
+specified. Please note that some addresses have special
+meanings (e.g., '0.0.0.0' and '::').&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="port"&gt;
+ &lt;type name="inet:port-number"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The local port number on this interface the TLS server
+listens on. When this grouping is used, it is RECOMMENDED
+that refine statement is used to either set a default port
+value or to set mandatory true.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="non-listening-tls-server-grouping"/&gt;
+ &lt;/grouping&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yang
new file mode 100644
index 00000000..c0dfd35b
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yang
@@ -0,0 +1,293 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-x509-cert-to-name {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name";
+ prefix x509c2n;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: Thomas Nadeau
+ &lt;mailto:tnadeau@lucidvision.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;
+
+ Editor: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;";
+ description
+ "This module contains a collection of YANG definitions for
+ extracting a name from an X.509 certificate.
+ The algorithm used to extract a name from an X.509 certificate
+ was first defined in RFC 6353.
+
+ Copyright (c) 2014 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 7407; see
+ the RFC itself for full legal notices.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model for
+ the Simple Network Management Protocol (SNMP)";
+
+ revision 2014-12-10 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7407: A YANG Data Model for SNMP Configuration";
+ }
+
+ identity cert-to-name {
+ description
+ "Base identity for algorithms to derive a name from a
+ certificate.";
+ }
+
+ identity specified {
+ base cert-to-name;
+ description
+ "Directly specifies the name to be used for the certificate.
+ The value of the leaf 'name' in the cert-to-name list is
+ used.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSpecified";
+ }
+
+ identity san-rfc822-name {
+ base cert-to-name;
+ description
+ "Maps a subjectAltName's rfc822Name to a name. The local part
+ of the rfc822Name is passed unaltered, but the host-part of
+ the name must be passed in lowercase. For example, the
+ rfc822Name field FooBar@Example.COM is mapped to name
+ FooBar@example.com.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANRFC822Name";
+ }
+
+ identity san-dns-name {
+ base cert-to-name;
+ description
+ "Maps a subjectAltName's dNSName to a name after first
+ converting it to all lowercase (RFC 5280 does not specify
+ converting to lowercase, so this involves an extra step).
+ This mapping results in a 1:1 correspondence between
+ subjectAltName dNSName values and the name values.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANDNSName";
+ }
+
+ identity san-ip-address {
+ base cert-to-name;
+ description
+ "Maps a subjectAltName's iPAddress to a name by
+ transforming the binary-encoded address as follows:
+
+ 1) for IPv4, the value is converted into a
+ decimal-dotted quad address (e.g., '192.0.2.1').
+
+ 2) for IPv6 addresses, the value is converted into a
+ 32-character, all-lowercase hexadecimal string
+ without any colon separators.
+
+ This mapping results in a 1:1 correspondence between
+ subjectAltName iPAddress values and the name values.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANIpAddress";
+ }
+
+ identity san-any {
+ base cert-to-name;
+ description
+ "Maps any of the following fields using the corresponding
+ mapping algorithms:
+
+ +------------+-----------------+
+ | Type | Algorithm |
+ |------------+-----------------|
+ | rfc822Name | san-rfc822-name |
+ | dNSName | san-dns-name |
+ | iPAddress | san-ip-address |
+ +------------+-----------------+
+
+ The first matching subjectAltName value found in the
+ certificate of the above types MUST be used when deriving
+ the name. The mapping algorithm specified in the
+ 'Algorithm' column MUST be used to derive the name.
+
+ This mapping results in a 1:1 correspondence between
+ subjectAltName values and name values. The three sub-mapping
+ algorithms produced by this combined algorithm cannot produce
+ conflicting results between themselves.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANAny";
+ }
+
+ identity common-name {
+ base cert-to-name;
+ description
+ "Maps a certificate's CommonName to a name after converting
+ it to a UTF-8 encoding. The usage of CommonNames is
+ deprecated, and users are encouraged to use subjectAltName
+ mapping methods instead. This mapping results in a 1:1
+ correspondence between certificate CommonName values and name
+ values.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertCommonName";
+ }
+
+ typedef tls-fingerprint {
+ type yang:hex-string {
+ pattern "([0-9a-fA-F]){2}(:([0-9a-fA-F]){2}){0,254}";
+ }
+ description
+ "A fingerprint value that can be used to uniquely reference
+ other data of potentially arbitrary length.
+
+ A tls-fingerprint value is composed of a 1-octet hashing
+ algorithm identifier followed by the fingerprint value. The
+ first octet value identifying the hashing algorithm is taken
+ from the IANA 'TLS HashAlgorithm Registry' (RFC 5246). The
+ remaining octets are filled using the results of the hashing
+ algorithm.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.SnmpTLSFingerprint";
+ }
+
+ grouping cert-to-name {
+ description
+ "Defines nodes for mapping certificates to names. Modules
+ that use this grouping should describe how the resulting
+ name is used.";
+ list cert-to-name {
+ key "id";
+ description
+ "This list defines how certificates are mapped to names.
+ The name is derived by considering each cert-to-name
+ list entry in order. The cert-to-name entry's fingerprint
+ determines whether the list entry is a match:
+
+ 1) If the cert-to-name list entry's fingerprint value
+ matches that of the presented certificate, then consider
+ the list entry a successful match.
+
+ 2) If the cert-to-name list entry's fingerprint value
+ matches that of a locally held copy of a trusted CA
+ certificate, and that CA certificate was part of the CA
+ certificate chain to the presented certificate, then
+ consider the list entry a successful match.
+
+ Once a matching cert-to-name list entry has been found, the
+ map-type is used to determine how the name associated with
+ the certificate should be determined. See the map-type
+ leaf's description for details on determining the name value.
+ If it is impossible to determine a name from the cert-to-name
+ list entry's data combined with the data presented in the
+ certificate, then additional cert-to-name list entries MUST
+ be searched to look for another potential match.
+
+ Security administrators are encouraged to make use of
+ certificates with subjectAltName fields that can be mapped to
+ names so that a single root CA certificate can allow all
+ child certificates' subjectAltName fields to map directly to
+ a name via a 1:1 transformation.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNEntry";
+ leaf id {
+ type uint32;
+ description
+ "The id specifies the order in which the entries in the
+ cert-to-name list are searched. Entries with lower
+ numbers are searched first.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNID";
+ }
+
+ leaf fingerprint {
+ type x509c2n:tls-fingerprint;
+ mandatory true;
+ description
+ "Specifies a value with which the fingerprint of the
+ full certificate presented by the peer is compared. If
+ the fingerprint of the full certificate presented by the
+ peer does not match the fingerprint configured, then the
+ entry is skipped, and the search for a match continues.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNFingerprint";
+ }
+
+ leaf map-type {
+ type identityref {
+ base cert-to-name;
+ }
+ mandatory true;
+ description
+ "Specifies the algorithm used to map the certificate
+ presented by the peer to a name.
+
+ Mappings that need additional configuration objects should
+ use the 'when' statement to make them conditional based on
+ the map-type.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNMapType";
+ }
+
+ leaf name {
+ when "../map-type = 'x509c2n:specified'";
+ type string;
+ mandatory true;
+ description
+ "Directly specifies the NETCONF username when the
+ map-type is 'specified'.";
+ reference
+ "RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNData";
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yin
new file mode 100644
index 00000000..f39e0267
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-x509-cert-to-name@2014-12-10.yin
@@ -0,0 +1,314 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-x509-cert-to-name"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:x509c2n="urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name"/&gt;
+ &lt;prefix value="x509c2n"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: Thomas Nadeau
+ &amp;lt;mailto:tnadeau@lucidvision.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;
+
+Editor: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of YANG definitions for
+extracting a name from an X.509 certificate.
+The algorithm used to extract a name from an X.509 certificate
+was first defined in RFC 6353.
+
+Copyright (c) 2014 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 7407; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model for
+ the Simple Network Management Protocol (SNMP)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;revision date="2014-12-10"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7407: A YANG Data Model for SNMP Configuration&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;identity name="cert-to-name"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Base identity for algorithms to derive a name from a
+certificate.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/identity&gt;
+ &lt;identity name="specified"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Directly specifies the name to be used for the certificate.
+The value of the leaf 'name' in the cert-to-name list is
+used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSpecified&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="san-rfc822-name"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maps a subjectAltName's rfc822Name to a name. The local part
+of the rfc822Name is passed unaltered, but the host-part of
+the name must be passed in lowercase. For example, the
+rfc822Name field FooBar@Example.COM is mapped to name
+FooBar@example.com.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANRFC822Name&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="san-dns-name"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maps a subjectAltName's dNSName to a name after first
+converting it to all lowercase (RFC 5280 does not specify
+converting to lowercase, so this involves an extra step).
+This mapping results in a 1:1 correspondence between
+subjectAltName dNSName values and the name values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANDNSName&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="san-ip-address"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maps a subjectAltName's iPAddress to a name by
+transforming the binary-encoded address as follows:
+
+ 1) for IPv4, the value is converted into a
+ decimal-dotted quad address (e.g., '192.0.2.1').
+
+ 2) for IPv6 addresses, the value is converted into a
+ 32-character, all-lowercase hexadecimal string
+ without any colon separators.
+
+This mapping results in a 1:1 correspondence between
+subjectAltName iPAddress values and the name values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANIpAddress&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="san-any"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maps any of the following fields using the corresponding
+mapping algorithms:
+
+ +------------+-----------------+
+ | Type | Algorithm |
+ |------------+-----------------|
+ | rfc822Name | san-rfc822-name |
+ | dNSName | san-dns-name |
+ | iPAddress | san-ip-address |
+ +------------+-----------------+
+
+The first matching subjectAltName value found in the
+certificate of the above types MUST be used when deriving
+the name. The mapping algorithm specified in the
+'Algorithm' column MUST be used to derive the name.
+
+This mapping results in a 1:1 correspondence between
+subjectAltName values and name values. The three sub-mapping
+algorithms produced by this combined algorithm cannot produce
+conflicting results between themselves.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertSANAny&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;identity name="common-name"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Maps a certificate's CommonName to a name after converting
+it to a UTF-8 encoding. The usage of CommonNames is
+deprecated, and users are encouraged to use subjectAltName
+mapping methods instead. This mapping results in a 1:1
+correspondence between certificate CommonName values and name
+values.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertCommonName&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/identity&gt;
+ &lt;typedef name="tls-fingerprint"&gt;
+ &lt;type name="yang:hex-string"&gt;
+ &lt;pattern value="([0-9a-fA-F]){2}(:([0-9a-fA-F]){2}){0,254}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A fingerprint value that can be used to uniquely reference
+other data of potentially arbitrary length.
+
+A tls-fingerprint value is composed of a 1-octet hashing
+algorithm identifier followed by the fingerprint value. The
+first octet value identifying the hashing algorithm is taken
+from the IANA 'TLS HashAlgorithm Registry' (RFC 5246). The
+remaining octets are filled using the results of the hashing
+algorithm.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.SnmpTLSFingerprint&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="cert-to-name"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Defines nodes for mapping certificates to names. Modules
+that use this grouping should describe how the resulting
+name is used.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="cert-to-name"&gt;
+ &lt;key value="id"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This list defines how certificates are mapped to names.
+The name is derived by considering each cert-to-name
+list entry in order. The cert-to-name entry's fingerprint
+determines whether the list entry is a match:
+
+1) If the cert-to-name list entry's fingerprint value
+ matches that of the presented certificate, then consider
+ the list entry a successful match.
+
+2) If the cert-to-name list entry's fingerprint value
+ matches that of a locally held copy of a trusted CA
+ certificate, and that CA certificate was part of the CA
+ certificate chain to the presented certificate, then
+ consider the list entry a successful match.
+
+Once a matching cert-to-name list entry has been found, the
+map-type is used to determine how the name associated with
+the certificate should be determined. See the map-type
+leaf's description for details on determining the name value.
+If it is impossible to determine a name from the cert-to-name
+list entry's data combined with the data presented in the
+certificate, then additional cert-to-name list entries MUST
+be searched to look for another potential match.
+
+Security administrators are encouraged to make use of
+certificates with subjectAltName fields that can be mapped to
+names so that a single root CA certificate can allow all
+child certificates' subjectAltName fields to map directly to
+a name via a 1:1 transformation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNEntry&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;leaf name="id"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The id specifies the order in which the entries in the
+cert-to-name list are searched. Entries with lower
+numbers are searched first.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNID&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="fingerprint"&gt;
+ &lt;type name="x509c2n:tls-fingerprint"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies a value with which the fingerprint of the
+full certificate presented by the peer is compared. If
+the fingerprint of the full certificate presented by the
+peer does not match the fingerprint configured, then the
+entry is skipped, and the search for a match continues.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNFingerprint&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="map-type"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="cert-to-name"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Specifies the algorithm used to map the certificate
+presented by the peer to a name.
+
+Mappings that need additional configuration objects should
+use the 'when' statement to make them conditional based on
+the map-type.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNMapType&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="name"&gt;
+ &lt;when condition="../map-type = 'x509c2n:specified'"/&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Directly specifies the NETCONF username when the
+map-type is 'specified'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6353: Transport Layer Security (TLS) Transport Model
+ for the Simple Network Management Protocol
+ (SNMP).
+ SNMP-TLS-TM-MIB.snmpTlstmCertToTSNData&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/grouping&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yang
new file mode 100644
index 00000000..67974c11
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yang
@@ -0,0 +1,492 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-yang-library {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+ prefix yanglib;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ import ietf-datastores {
+ prefix ds;
+ reference
+ "I-D.ietf-revised-datastores:
+ Network Management Datastore Architecture.";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netconf/&gt;
+ WG List: &lt;mailto:netconf@ietf.org&gt;
+
+ Author: Andy Bierman
+ &lt;mailto:andy@yumaworks.com&gt;
+
+ Author: Martin Bjorklund
+ &lt;mailto:mbj@tail-f.com&gt;
+
+ Author: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;";
+ description
+ "This module contains information about the YANG server
+ instance, including the modules and datastores the
+ server supports, and which modules are present in
+ which datastores.
+
+ Copyright (c) 2017 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2017-08-17 {
+ description
+ "Updated revision.";
+ reference
+ "RFC XXXX: YANG Library.";
+ }
+ revision 2016-04-09 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7895: YANG Module Library.";
+ }
+
+ typedef revision-identifier {
+ type string {
+ pattern "\\d{4}-\\d{2}-\\d{2}";
+ }
+ description
+ "Represents a specific date in YYYY-MM-DD format.";
+ }
+
+ grouping module-identification-leafs {
+ description
+ "Parameters for identifying YANG modules and submodules.";
+ leaf name {
+ type yang:yang-identifier;
+ mandatory true;
+ description
+ "The YANG module or submodule name.";
+ }
+
+ leaf revision {
+ type union {
+ type revision-identifier;
+ type string {
+ length "0";
+ }
+ }
+ mandatory true;
+ description
+ "The YANG module or submodule revision date.
+ A zero-length string is used if no revision statement
+ is present in the YANG module or submodule.";
+ }
+ }
+
+ grouping schema-leaf {
+ description
+ "Common schema leaf parameter for modules and submodules.";
+ leaf schema {
+ type inet:uri;
+ description
+ "Contains a URL that represents the YANG schema
+ resource for this module or submodule.
+ This leaf will only be present if there is a URL
+ available for retrieval of the schema for this entry.";
+ }
+ }
+
+ grouping implementation-parameters {
+ description
+ "Parameters for describing the implementation of a module.";
+ leaf-list feature {
+ type yang:yang-identifier;
+ description
+ "List of YANG feature names from this module that are
+ supported by the server, regardless whether they are defined
+ in the module or any included submodule.";
+ }
+
+ list deviation {
+ key "name revision";
+ description
+ "List of YANG deviation module names and revisions used by
+ this server to modify the conformance of the module
+ associated with this entry. Note that the same module can
+ be used for deviations for multiple modules, so the same
+ entry MAY appear within multiple 'module' entries.
+
+ The deviation module MUST be present in the 'module' list,
+ with the same name and revision values. The
+ 'conformance-type' value will be 'implement' for the
+ deviation module.";
+ uses module-identification-leafs;
+ }
+
+ leaf conformance-type {
+ type enumeration {
+ enum "implement" {
+ description
+ "Indicates that the server implements one or more
+ protocol-accessible objects defined in the YANG module
+ identified in this entry. This includes deviation
+ statements defined in the module.
+
+ For YANG version 1.1 modules, there is at most one
+ module entry with conformance type 'implement' for a
+ particular module name, since YANG 1.1 requires that at
+ most one revision of a module is implemented.
+
+ For YANG version 1 modules, there SHOULD NOT be more
+ than one module entry for a particular module name.";
+ }
+ enum "import" {
+ description
+ "Indicates that the server imports reusable definitions
+ from the specified revision of the module, but does not
+ implement any protocol accessible objects from this
+ revision.
+
+ Multiple module entries for the same module name MAY
+ exist. This can occur if multiple modules import the
+ same module, but specify different revision-dates in the
+ import statements.";
+ }
+ }
+ mandatory true;
+ description
+ "Indicates the type of conformance the server is claiming
+ for the YANG module identified by this entry.";
+ }
+ }
+
+ grouping yang-library-parameters {
+ description
+ "The YANG library data structure is represented as a grouping
+ so it can be reused in configuration or another monitoring
+ data structure.";
+ container modules {
+ description
+ "A container holding a list of modules. Note, modules being
+ listed here does not mean that they are supported by any
+ particular datastore.";
+ list module {
+ key "id";
+ description
+ "Each entry represents one revision of one module
+ currently supported by the server.";
+ leaf id {
+ type string;
+ description
+ "A stable identifier, independent of any other part
+ of this module instance.";
+ }
+
+ uses module-identification-leafs;
+
+ uses schema-leaf;
+
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ description
+ "The XML namespace identifier for this module.";
+ }
+
+ uses implementation-parameters;
+
+ list submodule {
+ key "name revision";
+ description
+ "Each entry represents one submodule within the
+ parent module.";
+ uses module-identification-leafs;
+
+ uses schema-leaf;
+ }
+ }
+ }
+
+ container module-sets {
+ description
+ "A container for a list of module-sets. Module-sets being
+ listed here does not mean that they are used by any
+ particular datastore.";
+ list module-set {
+ key "id";
+ description
+ "An arbitrary module-set definition provided by the
+ server.";
+ leaf id {
+ type string;
+ description
+ "A system-generated value that uniquely represents the
+ referenced set of modules. Any change to the number
+ of modules referenced, or to the modules themselves,
+ generates a different value.";
+ }
+
+ leaf-list module {
+ type leafref {
+ path "../../../modules/module/id";
+ }
+ description
+ "A module-instance supported by the server, including its
+ features and deviations.";
+ }
+ }
+ }
+
+ container datastores {
+ description
+ "A container for a list of datastores supported by the
+ server. Each datastore indicates which module-sets it
+ supports.";
+ list datastore {
+ key "name";
+ description
+ "A datastore supported by this server.";
+ leaf name {
+ type identityref {
+ base ds:datastore;
+ }
+ description
+ "The identity of the datastore.";
+ }
+
+ leaf module-set {
+ type leafref {
+ path "../../../module-sets/module-set/id";
+ }
+ description
+ "A reference to a module-set supported by this
+ datastore";
+ }
+ }
+ }
+ }
+
+ grouping module-list {
+ status deprecated;
+ description
+ "The module data structure is represented as a grouping
+ so it can be reused in configuration or another monitoring
+ data structure.";
+ grouping common-leafs {
+ status deprecated;
+ description
+ "Common parameters for YANG modules and submodules.";
+ leaf name {
+ type yang:yang-identifier;
+ status deprecated;
+ description
+ "The YANG module or submodule name.";
+ }
+
+ leaf revision {
+ type union {
+ type revision-identifier;
+ type string {
+ length "0";
+ }
+ }
+ status deprecated;
+ description
+ "The YANG module or submodule revision date.
+ A zero-length string is used if no revision statement
+ is present in the YANG module or submodule.";
+ }
+ }
+
+ list module {
+ key "name revision";
+ status deprecated;
+ description
+ "Each entry represents one revision of one module
+ currently supported by the server.";
+ uses common-leafs {
+ status deprecated;
+ }
+
+ uses schema-leaf {
+ status deprecated;
+ }
+
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ status deprecated;
+ description
+ "The XML namespace identifier for this module.";
+ }
+
+ leaf-list feature {
+ type yang:yang-identifier;
+ status deprecated;
+ description
+ "List of YANG feature names from this module that are
+ supported by the server, regardless whether they are
+ defined in the module or any included submodule.";
+ }
+
+ list deviation {
+ key "name revision";
+ status deprecated;
+ description
+ "List of YANG deviation module names and revisions
+ used by this server to modify the conformance of
+ the module associated with this entry. Note that
+ the same module can be used for deviations for
+ multiple modules, so the same entry MAY appear
+ within multiple 'module' entries.
+
+ The deviation module MUST be present in the 'module'
+ list, with the same name and revision values.
+ The 'conformance-type' value will be 'implement' for
+ the deviation module.";
+ uses common-leafs {
+ status deprecated;
+ }
+ }
+
+ leaf conformance-type {
+ type enumeration {
+ enum "implement" {
+ description
+ "Indicates that the server implements one or more
+ protocol-accessible objects defined in the YANG module
+ identified in this entry. This includes deviation
+ statements defined in the module.
+
+ For YANG version 1.1 modules, there is at most one
+ module entry with conformance type 'implement' for a
+ particular module name, since YANG 1.1 requires that
+ at most one revision of a module is implemented.
+
+ For YANG version 1 modules, there SHOULD NOT be more
+ than one module entry for a particular module name.";
+ }
+ enum "import" {
+ description
+ "Indicates that the server imports reusable definitions
+ from the specified revision of the module, but does
+ not implement any protocol accessible objects from
+ this revision.
+
+ Multiple module entries for the same module name MAY
+ exist. This can occur if multiple modules import the
+ same module, but specify different revision-dates in
+ the import statements.";
+ }
+ }
+ mandatory true;
+ status deprecated;
+ description
+ "Indicates the type of conformance the server is claiming
+ for the YANG module identified by this entry.";
+ }
+
+ list submodule {
+ key "name revision";
+ status deprecated;
+ description
+ "Each entry represents one submodule within the
+ parent module.";
+ uses common-leafs {
+ status deprecated;
+ }
+
+ uses schema-leaf {
+ status deprecated;
+ }
+ }
+ }
+ }
+
+ container yang-library {
+ config false;
+ description
+ "Container providing all the YANG meta information the
+ server possesses.";
+ uses yang-library-parameters;
+
+ leaf checksum {
+ type string;
+ config false;
+ mandatory true;
+ description
+ "A server-generated checksum of the contents of the
+ 'yang-library' tree. The server MUST change the value of
+ this leaf if the information represented by the
+ 'yang-library' tree, except yang-library/checksum, has
+ changed.";
+ }
+ }
+
+ container modules-state {
+ config false;
+ status deprecated;
+ description
+ "Contains YANG module monitoring information.";
+ leaf module-set-id {
+ type string;
+ mandatory true;
+ status deprecated;
+ description
+ "Contains a server-specific identifier representing
+ the current set of modules and submodules. The
+ server MUST change the value of this leaf if the
+ information represented by the 'module' list instances
+ has changed.";
+ }
+
+ uses module-list {
+ status deprecated;
+ }
+ }
+
+ notification yang-library-update {
+ description
+ "Generated when any YANG library information on the
+ server has changed.";
+ }
+
+ notification yang-library-change {
+ status deprecated;
+ description
+ "Generated when the set of modules and submodules supported
+ by the server has changed.";
+ leaf module-set-id {
+ type leafref {
+ path "/yanglib:modules-state/yanglib:module-set-id";
+ }
+ mandatory true;
+ status deprecated;
+ description
+ "Contains the module-set-id value representing the
+ set of modules and submodules supported at the server
+ at the time the notification is generated.";
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yin
new file mode 100644
index 00000000..95749bbb
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-library@2017-08-17.yin
@@ -0,0 +1,514 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-yang-library"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:yanglib="urn:ietf:params:xml:ns:yang:ietf-yang-library"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"
+ xmlns:inet="urn:ietf:params:xml:ns:yang:ietf-inet-types"
+ xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"&gt;
+ &lt;yang-version value="1.1"/&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-yang-library"/&gt;
+ &lt;prefix value="yanglib"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-inet-types"&gt;
+ &lt;prefix value="inet"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;import module="ietf-datastores"&gt;
+ &lt;prefix value="ds"/&gt;
+ &lt;reference&gt;
+ &lt;text&gt;I-D.ietf-revised-datastores:
+Network Management Datastore Architecture.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF (Network Configuration) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netconf/&amp;gt;
+WG List: &amp;lt;mailto:netconf@ietf.org&amp;gt;
+
+Author: Andy Bierman
+ &amp;lt;mailto:andy@yumaworks.com&amp;gt;
+
+Author: Martin Bjorklund
+ &amp;lt;mailto:mbj@tail-f.com&amp;gt;
+
+Author: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains information about the YANG server
+instance, including the modules and datastores the
+server supports, and which modules are present in
+which datastores.
+
+Copyright (c) 2017 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC XXXX; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2017-08-17"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Updated revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC XXXX: YANG Library.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;revision date="2016-04-09"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7895: YANG Module Library.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="revision-identifier"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="\d{4}-\d{2}-\d{2}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Represents a specific date in YYYY-MM-DD format.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="module-identification-leafs"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for identifying YANG modules and submodules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="yang:yang-identifier"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG module or submodule name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="revision"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="revision-identifier"/&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="0"/&gt;
+ &lt;/type&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG module or submodule revision date.
+A zero-length string is used if no revision statement
+is present in the YANG module or submodule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="schema-leaf"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Common schema leaf parameter for modules and submodules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="schema"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains a URL that represents the YANG schema
+resource for this module or submodule.
+This leaf will only be present if there is a URL
+available for retrieval of the schema for this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="implementation-parameters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Parameters for describing the implementation of a module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf-list name="feature"&gt;
+ &lt;type name="yang:yang-identifier"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of YANG feature names from this module that are
+supported by the server, regardless whether they are defined
+in the module or any included submodule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;list name="deviation"&gt;
+ &lt;key value="name revision"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of YANG deviation module names and revisions used by
+this server to modify the conformance of the module
+associated with this entry. Note that the same module can
+be used for deviations for multiple modules, so the same
+entry MAY appear within multiple 'module' entries.
+
+The deviation module MUST be present in the 'module' list,
+with the same name and revision values. The
+'conformance-type' value will be 'implement' for the
+deviation module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="module-identification-leafs"/&gt;
+ &lt;/list&gt;
+ &lt;leaf name="conformance-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="implement"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the server implements one or more
+protocol-accessible objects defined in the YANG module
+identified in this entry. This includes deviation
+statements defined in the module.
+
+For YANG version 1.1 modules, there is at most one
+module entry with conformance type 'implement' for a
+particular module name, since YANG 1.1 requires that at
+most one revision of a module is implemented.
+
+For YANG version 1 modules, there SHOULD NOT be more
+than one module entry for a particular module name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="import"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the server imports reusable definitions
+from the specified revision of the module, but does not
+implement any protocol accessible objects from this
+revision.
+
+Multiple module entries for the same module name MAY
+exist. This can occur if multiple modules import the
+same module, but specify different revision-dates in the
+import statements.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates the type of conformance the server is claiming
+for the YANG module identified by this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="yang-library-parameters"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG library data structure is represented as a grouping
+so it can be reused in configuration or another monitoring
+data structure.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="modules"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A container holding a list of modules. Note, modules being
+listed here does not mean that they are supported by any
+particular datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="module"&gt;
+ &lt;key value="id"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Each entry represents one revision of one module
+currently supported by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="id"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A stable identifier, independent of any other part
+of this module instance.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="module-identification-leafs"/&gt;
+ &lt;uses name="schema-leaf"/&gt;
+ &lt;leaf name="namespace"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The XML namespace identifier for this module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="implementation-parameters"/&gt;
+ &lt;list name="submodule"&gt;
+ &lt;key value="name revision"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Each entry represents one submodule within the
+parent module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="module-identification-leafs"/&gt;
+ &lt;uses name="schema-leaf"/&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="module-sets"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A container for a list of module-sets. Module-sets being
+listed here does not mean that they are used by any
+particular datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="module-set"&gt;
+ &lt;key value="id"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary module-set definition provided by the
+server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="id"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A system-generated value that uniquely represents the
+referenced set of modules. Any change to the number
+of modules referenced, or to the modules themselves,
+generates a different value.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="module"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="../../../modules/module/id"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A module-instance supported by the server, including its
+features and deviations.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;container name="datastores"&gt;
+ &lt;description&gt;
+ &lt;text&gt;A container for a list of datastores supported by the
+server. Each datastore indicates which module-sets it
+supports.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="datastore"&gt;
+ &lt;key value="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A datastore supported by this server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="identityref"&gt;
+ &lt;base name="ds:datastore"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The identity of the datastore.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="module-set"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="../../../module-sets/module-set/id"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A reference to a module-set supported by this
+datastore&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/grouping&gt;
+ &lt;grouping name="module-list"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The module data structure is represented as a grouping
+so it can be reused in configuration or another monitoring
+data structure.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;grouping name="common-leafs"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Common parameters for YANG modules and submodules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="yang:yang-identifier"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG module or submodule name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="revision"&gt;
+ &lt;type name="union"&gt;
+ &lt;type name="revision-identifier"/&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="0"/&gt;
+ &lt;/type&gt;
+ &lt;/type&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The YANG module or submodule revision date.
+A zero-length string is used if no revision statement
+is present in the YANG module or submodule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/grouping&gt;
+ &lt;list name="module"&gt;
+ &lt;key value="name revision"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Each entry represents one revision of one module
+currently supported by the server.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="common-leafs"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;uses name="schema-leaf"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;leaf name="namespace"&gt;
+ &lt;type name="inet:uri"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The XML namespace identifier for this module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf-list name="feature"&gt;
+ &lt;type name="yang:yang-identifier"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of YANG feature names from this module that are
+supported by the server, regardless whether they are
+defined in the module or any included submodule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf-list&gt;
+ &lt;list name="deviation"&gt;
+ &lt;key value="name revision"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of YANG deviation module names and revisions
+used by this server to modify the conformance of
+the module associated with this entry. Note that
+the same module can be used for deviations for
+multiple modules, so the same entry MAY appear
+within multiple 'module' entries.
+
+The deviation module MUST be present in the 'module'
+list, with the same name and revision values.
+The 'conformance-type' value will be 'implement' for
+the deviation module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="common-leafs"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;/list&gt;
+ &lt;leaf name="conformance-type"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="implement"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the server implements one or more
+protocol-accessible objects defined in the YANG module
+identified in this entry. This includes deviation
+statements defined in the module.
+
+For YANG version 1.1 modules, there is at most one
+module entry with conformance type 'implement' for a
+particular module name, since YANG 1.1 requires that
+at most one revision of a module is implemented.
+
+For YANG version 1 modules, there SHOULD NOT be more
+than one module entry for a particular module name.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;enum name="import"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates that the server imports reusable definitions
+from the specified revision of the module, but does
+not implement any protocol accessible objects from
+this revision.
+
+Multiple module entries for the same module name MAY
+exist. This can occur if multiple modules import the
+same module, but specify different revision-dates in
+the import statements.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/enum&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Indicates the type of conformance the server is claiming
+for the YANG module identified by this entry.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;list name="submodule"&gt;
+ &lt;key value="name revision"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Each entry represents one submodule within the
+parent module.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="common-leafs"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;uses name="schema-leaf"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;/list&gt;
+ &lt;/list&gt;
+ &lt;/grouping&gt;
+ &lt;container name="yang-library"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Container providing all the YANG meta information the
+server possesses.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="yang-library-parameters"/&gt;
+ &lt;leaf name="checksum"&gt;
+ &lt;type name="string"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A server-generated checksum of the contents of the
+'yang-library' tree. The server MUST change the value of
+this leaf if the information represented by the
+'yang-library' tree, except yang-library/checksum, has
+changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;container name="modules-state"&gt;
+ &lt;config value="false"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains YANG module monitoring information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="module-set-id"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains a server-specific identifier representing
+the current set of modules and submodules. The
+server MUST change the value of this leaf if the
+information represented by the 'module' list instances
+has changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;uses name="module-list"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;/uses&gt;
+ &lt;/container&gt;
+ &lt;notification name="yang-library-update"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when any YANG library information on the
+server has changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/notification&gt;
+ &lt;notification name="yang-library-change"&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Generated when the set of modules and submodules supported
+by the server has changed.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="module-set-id"&gt;
+ &lt;type name="leafref"&gt;
+ &lt;path value="/yanglib:modules-state/yanglib:module-set-id"/&gt;
+ &lt;/type&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;status value="deprecated"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Contains the module-set-id value representing the
+set of modules and submodules supported at the server
+at the time the notification is generated.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yang
new file mode 100644
index 00000000..b0b0961f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yang
@@ -0,0 +1,83 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-yang-metadata {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-metadata";
+ prefix md;
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;https://datatracker.ietf.org/wg/netmod/&gt;
+
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: Lou Berger
+ &lt;mailto:lberger@labn.net&gt;
+
+ WG Chair: Kent Watsen
+ &lt;mailto:kwatsen@juniper.net&gt;
+
+ Editor: Ladislav Lhotka
+ &lt;mailto:lhotka@nic.cz&gt;";
+ description
+ "This YANG module defines an 'extension' statement that allows
+ for defining metadata annotations.
+
+ Copyright (c) 2016 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject to
+ the license terms contained in, the Simplified BSD License set
+ forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 7952
+ (http://www.rfc-editor.org/info/rfc7952); see the RFC itself
+ for full legal notices.";
+
+ revision 2016-08-05 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7952: Defining and Using Metadata with YANG";
+ }
+
+ extension annotation {
+ argument name;
+ description
+ "This extension allows for defining metadata annotations in
+ YANG modules. The 'md:annotation' statement can appear only
+ at the top level of a YANG module or submodule, i.e., it
+ becomes a new alternative in the ABNF production rule for
+ 'body-stmts' (Section 14 in RFC 7950).
+
+ The argument of the 'md:annotation' statement defines the name
+ of the annotation. Syntactically, it is a YANG identifier as
+ defined in Section 6.2 of RFC 7950.
+
+ An annotation defined with this 'extension' statement inherits
+ the namespace and other context from the YANG module in which
+ it is defined.
+
+ The data type of the annotation value is specified in the same
+ way as for a leaf data node using the 'type' statement.
+
+ The semantics of the annotation and other documentation can be
+ specified using the following standard YANG substatements (all
+ are optional): 'description', 'if-feature', 'reference',
+ 'status', and 'units'.
+
+ A server announces support for a particular annotation by
+ including the module in which the annotation is defined among
+ the advertised YANG modules, e.g., in a NETCONF &lt;hello&gt;
+ message or in the YANG library (RFC 7950). The annotation can
+ then be attached to any instance of a data node defined in any
+ YANG module that is advertised by the server.
+
+ XML encoding and JSON encoding of annotations are defined in
+ RFC 7952.";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yin
new file mode 100644
index 00000000..6b87e821
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-metadata@2016-08-05.yin
@@ -0,0 +1,89 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-yang-metadata"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:md="urn:ietf:params:xml:ns:yang:ietf-yang-metadata"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-yang-metadata"/&gt;
+ &lt;prefix value="md"/&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;https://datatracker.ietf.org/wg/netmod/&amp;gt;
+
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: Lou Berger
+ &amp;lt;mailto:lberger@labn.net&amp;gt;
+
+WG Chair: Kent Watsen
+ &amp;lt;mailto:kwatsen@juniper.net&amp;gt;
+
+Editor: Ladislav Lhotka
+ &amp;lt;mailto:lhotka@nic.cz&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This YANG module defines an 'extension' statement that allows
+for defining metadata annotations.
+
+Copyright (c) 2016 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject to
+the license terms contained in, the Simplified BSD License set
+forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 7952
+(http://www.rfc-editor.org/info/rfc7952); see the RFC itself
+for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2016-08-05"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7952: Defining and Using Metadata with YANG&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;extension name="annotation"&gt;
+ &lt;argument name="name"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This extension allows for defining metadata annotations in
+YANG modules. The 'md:annotation' statement can appear only
+at the top level of a YANG module or submodule, i.e., it
+becomes a new alternative in the ABNF production rule for
+'body-stmts' (Section 14 in RFC 7950).
+
+The argument of the 'md:annotation' statement defines the name
+of the annotation. Syntactically, it is a YANG identifier as
+defined in Section 6.2 of RFC 7950.
+
+An annotation defined with this 'extension' statement inherits
+the namespace and other context from the YANG module in which
+it is defined.
+
+The data type of the annotation value is specified in the same
+way as for a leaf data node using the 'type' statement.
+
+The semantics of the annotation and other documentation can be
+specified using the following standard YANG substatements (all
+are optional): 'description', 'if-feature', 'reference',
+'status', and 'units'.
+
+A server announces support for a particular annotation by
+including the module in which the annotation is defined among
+the advertised YANG modules, e.g., in a NETCONF &amp;lt;hello&amp;gt;
+message or in the YANG library (RFC 7950). The annotation can
+then be attached to any instance of a data node defined in any
+YANG module that is advertised by the server.
+
+XML encoding and JSON encoding of annotations are defined in
+RFC 7952.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/extension&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yang
new file mode 100644
index 00000000..f09381fb
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yang
@@ -0,0 +1,455 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-yang-types {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+ prefix yang;
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+ contact
+ "WG Web: &lt;http://tools.ietf.org/wg/netmod/&gt;
+ WG List: &lt;mailto:netmod@ietf.org&gt;
+
+ WG Chair: David Kessens
+ &lt;mailto:david.kessens@nsn.com&gt;
+
+ WG Chair: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;
+
+ Editor: Juergen Schoenwaelder
+ &lt;mailto:j.schoenwaelder@jacobs-university.de&gt;";
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types.
+
+ Copyright (c) 2013 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6991; see
+ the RFC itself for full legal notices.";
+
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - yang-identifier
+ - hex-string
+ - uuid
+ - dotted-quad";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ revision 2010-09-24 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 6021: Common YANG Data Types";
+ }
+
+ typedef counter32 {
+ type uint32;
+ description
+ "The counter32 type represents a non-negative integer
+ that monotonically increases until it reaches a
+ maximum value of 2^32-1 (4294967295 decimal), when it
+ wraps around and starts increasing again from zero.
+
+ Counters have no defined 'initial' value, and thus, a
+ single value of a counter has (in general) no information
+ content. Discontinuities in the monotonically increasing
+ value normally occur at re-initialization of the
+ management system, and at other times as specified in the
+ description of a schema node using this type. If such
+ other times can occur, for example, the creation of
+ a schema node of type counter32 at times other than
+ re-initialization, then a corresponding schema node
+ should be defined, with an appropriate type, to indicate
+ the last discontinuity.
+
+ The counter32 type should not be used for configuration
+ schema nodes. A default statement SHOULD NOT be used in
+ combination with the type counter32.
+
+ In the value set and its semantics, this type is equivalent
+ to the Counter32 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef zero-based-counter32 {
+ type yang:counter32;
+ default "0";
+ description
+ "The zero-based-counter32 type represents a counter32
+ that has the defined 'initial' value zero.
+
+ A schema node of this type will be set to zero (0) on creation
+ and will thereafter increase monotonically until it reaches
+ a maximum value of 2^32-1 (4294967295 decimal), when it
+ wraps around and starts increasing again from zero.
+
+ Provided that an application discovers a new schema node
+ of this type within the minimum time to wrap, it can use the
+ 'initial' value as a delta. It is important for a management
+ station to be aware of this minimum time and the actual time
+ between polls, and to discard data if the actual time is too
+ long or there is no defined minimum time.
+
+ In the value set and its semantics, this type is equivalent
+ to the ZeroBasedCounter32 textual convention of the SMIv2.";
+ reference
+ "RFC 4502: Remote Network Monitoring Management Information
+ Base Version 2";
+ }
+
+ typedef counter64 {
+ type uint64;
+ description
+ "The counter64 type represents a non-negative integer
+ that monotonically increases until it reaches a
+ maximum value of 2^64-1 (18446744073709551615 decimal),
+ when it wraps around and starts increasing again from zero.
+
+ Counters have no defined 'initial' value, and thus, a
+ single value of a counter has (in general) no information
+ content. Discontinuities in the monotonically increasing
+ value normally occur at re-initialization of the
+ management system, and at other times as specified in the
+ description of a schema node using this type. If such
+ other times can occur, for example, the creation of
+ a schema node of type counter64 at times other than
+ re-initialization, then a corresponding schema node
+ should be defined, with an appropriate type, to indicate
+ the last discontinuity.
+
+ The counter64 type should not be used for configuration
+ schema nodes. A default statement SHOULD NOT be used in
+ combination with the type counter64.
+
+ In the value set and its semantics, this type is equivalent
+ to the Counter64 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef zero-based-counter64 {
+ type yang:counter64;
+ default "0";
+ description
+ "The zero-based-counter64 type represents a counter64 that
+ has the defined 'initial' value zero.
+
+ A schema node of this type will be set to zero (0) on creation
+ and will thereafter increase monotonically until it reaches
+ a maximum value of 2^64-1 (18446744073709551615 decimal),
+ when it wraps around and starts increasing again from zero.
+
+ Provided that an application discovers a new schema node
+ of this type within the minimum time to wrap, it can use the
+ 'initial' value as a delta. It is important for a management
+ station to be aware of this minimum time and the actual time
+ between polls, and to discard data if the actual time is too
+ long or there is no defined minimum time.
+
+ In the value set and its semantics, this type is equivalent
+ to the ZeroBasedCounter64 textual convention of the SMIv2.";
+ reference
+ "RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types";
+ }
+
+ typedef gauge32 {
+ type uint32;
+ description
+ "The gauge32 type represents a non-negative integer, which
+ may increase or decrease, but shall never exceed a maximum
+ value, nor fall below a minimum value. The maximum value
+ cannot be greater than 2^32-1 (4294967295 decimal), and
+ the minimum value cannot be smaller than 0. The value of
+ a gauge32 has its maximum value whenever the information
+ being modeled is greater than or equal to its maximum
+ value, and has its minimum value whenever the information
+ being modeled is smaller than or equal to its minimum value.
+ If the information being modeled subsequently decreases
+ below (increases above) the maximum (minimum) value, the
+ gauge32 also decreases (increases).
+
+ In the value set and its semantics, this type is equivalent
+ to the Gauge32 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef gauge64 {
+ type uint64;
+ description
+ "The gauge64 type represents a non-negative integer, which
+ may increase or decrease, but shall never exceed a maximum
+ value, nor fall below a minimum value. The maximum value
+ cannot be greater than 2^64-1 (18446744073709551615), and
+ the minimum value cannot be smaller than 0. The value of
+ a gauge64 has its maximum value whenever the information
+ being modeled is greater than or equal to its maximum
+ value, and has its minimum value whenever the information
+ being modeled is smaller than or equal to its minimum value.
+ If the information being modeled subsequently decreases
+ below (increases above) the maximum (minimum) value, the
+ gauge64 also decreases (increases).
+
+ In the value set and its semantics, this type is equivalent
+ to the CounterBasedGauge64 SMIv2 textual convention defined
+ in RFC 2856";
+ reference
+ "RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types";
+ }
+
+ typedef object-identifier {
+ type string {
+ pattern "(([0-1](\\.[1-3]?[0-9]))|(2\\.(0|([1-9]\\d*))))(\\.(0|([1-9]\\d*)))*";
+ }
+ description
+ "The object-identifier type represents administratively
+ assigned names in a registration-hierarchical-name tree.
+
+ Values of this type are denoted as a sequence of numerical
+ non-negative sub-identifier values. Each sub-identifier
+ value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
+ are separated by single dots and without any intermediate
+ whitespace.
+
+ The ASN.1 standard restricts the value space of the first
+ sub-identifier to 0, 1, or 2. Furthermore, the value space
+ of the second sub-identifier is restricted to the range
+ 0 to 39 if the first sub-identifier is 0 or 1. Finally,
+ the ASN.1 standard requires that an object identifier
+ has always at least two sub-identifiers. The pattern
+ captures these restrictions.
+
+ Although the number of sub-identifiers is not limited,
+ module designers should realize that there may be
+ implementations that stick with the SMIv2 limit of 128
+ sub-identifiers.
+
+ This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+ since it is not restricted to 128 sub-identifiers. Hence,
+ this type SHOULD NOT be used to represent the SMIv2 OBJECT
+ IDENTIFIER type; the object-identifier-128 type SHOULD be
+ used instead.";
+ reference
+ "ISO9834-1: Information technology -- Open Systems
+ Interconnection -- Procedures for the operation of OSI
+ Registration Authorities: General procedures and top
+ arcs of the ASN.1 Object Identifier tree";
+ }
+
+ typedef object-identifier-128 {
+ type object-identifier {
+ pattern "\\d*(\\.\\d*){1,127}";
+ }
+ description
+ "This type represents object-identifiers restricted to 128
+ sub-identifiers.
+
+ In the value set and its semantics, this type is equivalent
+ to the OBJECT IDENTIFIER type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef yang-identifier {
+ type string {
+ length "1..max";
+ pattern "[a-zA-Z_][a-zA-Z0-9\\-_.]*";
+ pattern ".|..|[^xX].*|.[^mM].*|..[^lL].*";
+ }
+ description
+ "A YANG identifier string as defined by the 'identifier'
+ rule in Section 12 of RFC 6020. An identifier must
+ start with an alphabetic character or an underscore
+ followed by an arbitrary sequence of alphabetic or
+ numeric characters, underscores, hyphens, or dots.
+
+ A YANG identifier MUST NOT start with any possible
+ combination of the lowercase or uppercase character
+ sequence 'xml'.";
+ reference
+ "RFC 6020: YANG - A Data Modeling Language for the Network
+ Configuration Protocol (NETCONF)";
+ }
+
+ typedef date-and-time {
+ type string {
+ pattern "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[\\+\\-]\\d{2}:\\d{2})";
+ }
+ description
+ "The date-and-time type is a profile of the ISO 8601
+ standard for representation of dates and times using the
+ Gregorian calendar. The profile is defined by the
+ date-time production in Section 5.6 of RFC 3339.
+
+ The date-and-time type is compatible with the dateTime XML
+ schema type with the following notable exceptions:
+
+ (a) The date-and-time type does not allow negative years.
+
+ (b) The date-and-time time-offset -00:00 indicates an unknown
+ time zone (see RFC 3339) while -00:00 and +00:00 and Z
+ all represent the same time zone in dateTime.
+
+ (c) The canonical format (see below) of data-and-time values
+ differs from the canonical format used by the dateTime XML
+ schema type, which requires all times to be in UTC using
+ the time-offset 'Z'.
+
+ This type is not equivalent to the DateAndTime textual
+ convention of the SMIv2 since RFC 3339 uses a different
+ separator between full-date and full-time and provides
+ higher resolution of time-secfrac.
+
+ The canonical format for date-and-time values with a known time
+ zone uses a numeric time zone offset that is calculated using
+ the device's configured known offset to UTC time. A change of
+ the device's offset to UTC time will cause date-and-time values
+ to change accordingly. Such changes might happen periodically
+ in case a server follows automatically daylight saving time
+ (DST) time zone offset changes. The canonical format for
+ date-and-time values with an unknown time zone (usually
+ referring to the notion of local time) uses the time-offset
+ -00:00.";
+ reference
+ "RFC 3339: Date and Time on the Internet: Timestamps
+ RFC 2579: Textual Conventions for SMIv2
+ XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+ }
+
+ typedef timeticks {
+ type uint32;
+ description
+ "The timeticks type represents a non-negative integer that
+ represents the time, modulo 2^32 (4294967296 decimal), in
+ hundredths of a second between two epochs. When a schema
+ node is defined that uses this type, the description of
+ the schema node identifies both of the reference epochs.
+
+ In the value set and its semantics, this type is equivalent
+ to the TimeTicks type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef timestamp {
+ type yang:timeticks;
+ description
+ "The timestamp type represents the value of an associated
+ timeticks schema node at which a specific occurrence
+ happened. The specific occurrence must be defined in the
+ description of any schema node defined using this type. When
+ the specific occurrence occurred prior to the last time the
+ associated timeticks attribute was zero, then the timestamp
+ value is zero. Note that this requires all timestamp values
+ to be reset to zero when the value of the associated timeticks
+ attribute reaches 497+ days and wraps around to zero.
+
+ The associated timeticks schema node must be specified
+ in the description of any schema node using this type.
+
+ In the value set and its semantics, this type is equivalent
+ to the TimeStamp textual convention of the SMIv2.";
+ reference
+ "RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ typedef phys-address {
+ type string {
+ pattern "([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?";
+ }
+ description
+ "Represents media- or physical-level addresses represented
+ as a sequence octets, each octet represented by two hexadecimal
+ numbers. Octets are separated by colons. The canonical
+ representation uses lowercase characters.
+
+ In the value set and its semantics, this type is equivalent
+ to the PhysAddress textual convention of the SMIv2.";
+ reference
+ "RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ typedef mac-address {
+ type string {
+ pattern "[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}";
+ }
+ description
+ "The mac-address type represents an IEEE 802 MAC address.
+ The canonical representation uses lowercase characters.
+
+ In the value set and its semantics, this type is equivalent
+ to the MacAddress textual convention of the SMIv2.";
+ reference
+ "IEEE 802: IEEE Standard for Local and Metropolitan Area
+ Networks: Overview and Architecture
+ RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ typedef xpath1.0 {
+ type string;
+ description
+ "This type represents an XPATH 1.0 expression.
+
+ When a schema node is defined that uses this type, the
+ description of the schema node MUST specify the XPath
+ context in which the XPath expression is evaluated.";
+ reference
+ "XPATH: XML Path Language (XPath) Version 1.0";
+ }
+
+ typedef hex-string {
+ type string {
+ pattern "([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?";
+ }
+ description
+ "A hexadecimal string with octets represented as hex digits
+ separated by colons. The canonical representation uses
+ lowercase characters.";
+ }
+
+ typedef uuid {
+ type string {
+ pattern "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}";
+ }
+ description
+ "A Universally Unique IDentifier in the string representation
+ defined in RFC 4122. The canonical representation uses
+ lowercase characters.
+
+ The following is an example of a UUID in string representation:
+ f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+ ";
+ reference
+ "RFC 4122: A Universally Unique IDentifier (UUID) URN
+ Namespace";
+ }
+
+ typedef dotted-quad {
+ type string {
+ pattern "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])";
+ }
+ description
+ "An unsigned 32-bit number expressed in the dotted-quad
+ notation, i.e., four octets written as decimal numbers
+ and separated with the '.' (full stop) character.";
+ }
+}
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yin
new file mode 100644
index 00000000..07db8feb
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/ietf-yang-types@2013-07-15.yin
@@ -0,0 +1,479 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="ietf-yang-types"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:ietf-yang-types"/&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETMOD (NETCONF Data Modeling Language) Working Group&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;WG Web: &amp;lt;http://tools.ietf.org/wg/netmod/&amp;gt;
+WG List: &amp;lt;mailto:netmod@ietf.org&amp;gt;
+
+WG Chair: David Kessens
+ &amp;lt;mailto:david.kessens@nsn.com&amp;gt;
+
+WG Chair: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;
+
+Editor: Juergen Schoenwaelder
+ &amp;lt;mailto:j.schoenwaelder@jacobs-university.de&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This module contains a collection of generally useful derived
+YANG data types.
+
+Copyright (c) 2013 IETF Trust and the persons identified as
+authors of the code. All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, is permitted pursuant to, and subject
+to the license terms contained in, the Simplified BSD License
+set forth in Section 4.c of the IETF Trust's Legal Provisions
+Relating to IETF Documents
+(http://trustee.ietf.org/license-info).
+
+This version of this YANG module is part of RFC 6991; see
+the RFC itself for full legal notices.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2013-07-15"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This revision adds the following new data types:
+- yang-identifier
+- hex-string
+- uuid
+- dotted-quad&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6991: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;revision date="2010-09-24"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6021: Common YANG Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="counter32"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The counter32 type represents a non-negative integer
+that monotonically increases until it reaches a
+maximum value of 2^32-1 (4294967295 decimal), when it
+wraps around and starts increasing again from zero.
+
+Counters have no defined 'initial' value, and thus, a
+single value of a counter has (in general) no information
+content. Discontinuities in the monotonically increasing
+value normally occur at re-initialization of the
+management system, and at other times as specified in the
+description of a schema node using this type. If such
+other times can occur, for example, the creation of
+a schema node of type counter32 at times other than
+re-initialization, then a corresponding schema node
+should be defined, with an appropriate type, to indicate
+the last discontinuity.
+
+The counter32 type should not be used for configuration
+schema nodes. A default statement SHOULD NOT be used in
+combination with the type counter32.
+
+In the value set and its semantics, this type is equivalent
+to the Counter32 type of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2578: Structure of Management Information Version 2
+ (SMIv2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="zero-based-counter32"&gt;
+ &lt;type name="yang:counter32"/&gt;
+ &lt;default value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The zero-based-counter32 type represents a counter32
+that has the defined 'initial' value zero.
+
+A schema node of this type will be set to zero (0) on creation
+and will thereafter increase monotonically until it reaches
+a maximum value of 2^32-1 (4294967295 decimal), when it
+wraps around and starts increasing again from zero.
+
+Provided that an application discovers a new schema node
+of this type within the minimum time to wrap, it can use the
+'initial' value as a delta. It is important for a management
+station to be aware of this minimum time and the actual time
+between polls, and to discard data if the actual time is too
+long or there is no defined minimum time.
+
+In the value set and its semantics, this type is equivalent
+to the ZeroBasedCounter32 textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4502: Remote Network Monitoring Management Information
+ Base Version 2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="counter64"&gt;
+ &lt;type name="uint64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The counter64 type represents a non-negative integer
+that monotonically increases until it reaches a
+maximum value of 2^64-1 (18446744073709551615 decimal),
+when it wraps around and starts increasing again from zero.
+
+Counters have no defined 'initial' value, and thus, a
+single value of a counter has (in general) no information
+content. Discontinuities in the monotonically increasing
+value normally occur at re-initialization of the
+management system, and at other times as specified in the
+description of a schema node using this type. If such
+other times can occur, for example, the creation of
+a schema node of type counter64 at times other than
+re-initialization, then a corresponding schema node
+should be defined, with an appropriate type, to indicate
+the last discontinuity.
+
+The counter64 type should not be used for configuration
+schema nodes. A default statement SHOULD NOT be used in
+combination with the type counter64.
+
+In the value set and its semantics, this type is equivalent
+to the Counter64 type of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2578: Structure of Management Information Version 2
+ (SMIv2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="zero-based-counter64"&gt;
+ &lt;type name="yang:counter64"/&gt;
+ &lt;default value="0"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The zero-based-counter64 type represents a counter64 that
+has the defined 'initial' value zero.
+
+A schema node of this type will be set to zero (0) on creation
+and will thereafter increase monotonically until it reaches
+a maximum value of 2^64-1 (18446744073709551615 decimal),
+when it wraps around and starts increasing again from zero.
+
+Provided that an application discovers a new schema node
+of this type within the minimum time to wrap, it can use the
+'initial' value as a delta. It is important for a management
+station to be aware of this minimum time and the actual time
+between polls, and to discard data if the actual time is too
+long or there is no defined minimum time.
+
+In the value set and its semantics, this type is equivalent
+to the ZeroBasedCounter64 textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="gauge32"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The gauge32 type represents a non-negative integer, which
+may increase or decrease, but shall never exceed a maximum
+value, nor fall below a minimum value. The maximum value
+cannot be greater than 2^32-1 (4294967295 decimal), and
+the minimum value cannot be smaller than 0. The value of
+a gauge32 has its maximum value whenever the information
+being modeled is greater than or equal to its maximum
+value, and has its minimum value whenever the information
+being modeled is smaller than or equal to its minimum value.
+If the information being modeled subsequently decreases
+below (increases above) the maximum (minimum) value, the
+gauge32 also decreases (increases).
+
+In the value set and its semantics, this type is equivalent
+to the Gauge32 type of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2578: Structure of Management Information Version 2
+ (SMIv2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="gauge64"&gt;
+ &lt;type name="uint64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The gauge64 type represents a non-negative integer, which
+may increase or decrease, but shall never exceed a maximum
+value, nor fall below a minimum value. The maximum value
+cannot be greater than 2^64-1 (18446744073709551615), and
+the minimum value cannot be smaller than 0. The value of
+a gauge64 has its maximum value whenever the information
+being modeled is greater than or equal to its maximum
+value, and has its minimum value whenever the information
+being modeled is smaller than or equal to its minimum value.
+If the information being modeled subsequently decreases
+below (increases above) the maximum (minimum) value, the
+gauge64 also decreases (increases).
+
+In the value set and its semantics, this type is equivalent
+to the CounterBasedGauge64 SMIv2 textual convention defined
+in RFC 2856&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="object-identifier"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))(\.(0|([1-9]\d*)))*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The object-identifier type represents administratively
+assigned names in a registration-hierarchical-name tree.
+
+Values of this type are denoted as a sequence of numerical
+non-negative sub-identifier values. Each sub-identifier
+value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
+are separated by single dots and without any intermediate
+whitespace.
+
+The ASN.1 standard restricts the value space of the first
+sub-identifier to 0, 1, or 2. Furthermore, the value space
+of the second sub-identifier is restricted to the range
+0 to 39 if the first sub-identifier is 0 or 1. Finally,
+the ASN.1 standard requires that an object identifier
+has always at least two sub-identifiers. The pattern
+captures these restrictions.
+
+Although the number of sub-identifiers is not limited,
+module designers should realize that there may be
+implementations that stick with the SMIv2 limit of 128
+sub-identifiers.
+
+This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+since it is not restricted to 128 sub-identifiers. Hence,
+this type SHOULD NOT be used to represent the SMIv2 OBJECT
+IDENTIFIER type; the object-identifier-128 type SHOULD be
+used instead.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;ISO9834-1: Information technology -- Open Systems
+Interconnection -- Procedures for the operation of OSI
+Registration Authorities: General procedures and top
+arcs of the ASN.1 Object Identifier tree&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="object-identifier-128"&gt;
+ &lt;type name="object-identifier"&gt;
+ &lt;pattern value="\d*(\.\d*){1,127}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;This type represents object-identifiers restricted to 128
+sub-identifiers.
+
+In the value set and its semantics, this type is equivalent
+to the OBJECT IDENTIFIER type of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2578: Structure of Management Information Version 2
+ (SMIv2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="yang-identifier"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="1..max"/&gt;
+ &lt;pattern value="[a-zA-Z_][a-zA-Z0-9\-_.]*"/&gt;
+ &lt;pattern value=".|..|[^xX].*|.[^mM].*|..[^lL].*"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A YANG identifier string as defined by the 'identifier'
+rule in Section 12 of RFC 6020. An identifier must
+start with an alphabetic character or an underscore
+followed by an arbitrary sequence of alphabetic or
+numeric characters, underscores, hyphens, or dots.
+
+A YANG identifier MUST NOT start with any possible
+combination of the lowercase or uppercase character
+sequence 'xml'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6020: YANG - A Data Modeling Language for the Network
+ Configuration Protocol (NETCONF)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="date-and-time"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-]\d{2}:\d{2})"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The date-and-time type is a profile of the ISO 8601
+standard for representation of dates and times using the
+Gregorian calendar. The profile is defined by the
+date-time production in Section 5.6 of RFC 3339.
+
+The date-and-time type is compatible with the dateTime XML
+schema type with the following notable exceptions:
+
+(a) The date-and-time type does not allow negative years.
+
+(b) The date-and-time time-offset -00:00 indicates an unknown
+ time zone (see RFC 3339) while -00:00 and +00:00 and Z
+ all represent the same time zone in dateTime.
+
+(c) The canonical format (see below) of data-and-time values
+ differs from the canonical format used by the dateTime XML
+ schema type, which requires all times to be in UTC using
+ the time-offset 'Z'.
+
+This type is not equivalent to the DateAndTime textual
+convention of the SMIv2 since RFC 3339 uses a different
+separator between full-date and full-time and provides
+higher resolution of time-secfrac.
+
+The canonical format for date-and-time values with a known time
+zone uses a numeric time zone offset that is calculated using
+the device's configured known offset to UTC time. A change of
+the device's offset to UTC time will cause date-and-time values
+to change accordingly. Such changes might happen periodically
+in case a server follows automatically daylight saving time
+(DST) time zone offset changes. The canonical format for
+date-and-time values with an unknown time zone (usually
+referring to the notion of local time) uses the time-offset
+-00:00.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 3339: Date and Time on the Internet: Timestamps
+RFC 2579: Textual Conventions for SMIv2
+XSD-TYPES: XML Schema Part 2: Datatypes Second Edition&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="timeticks"&gt;
+ &lt;type name="uint32"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The timeticks type represents a non-negative integer that
+represents the time, modulo 2^32 (4294967296 decimal), in
+hundredths of a second between two epochs. When a schema
+node is defined that uses this type, the description of
+the schema node identifies both of the reference epochs.
+
+In the value set and its semantics, this type is equivalent
+to the TimeTicks type of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2578: Structure of Management Information Version 2
+ (SMIv2)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="timestamp"&gt;
+ &lt;type name="yang:timeticks"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The timestamp type represents the value of an associated
+timeticks schema node at which a specific occurrence
+happened. The specific occurrence must be defined in the
+description of any schema node defined using this type. When
+the specific occurrence occurred prior to the last time the
+associated timeticks attribute was zero, then the timestamp
+value is zero. Note that this requires all timestamp values
+to be reset to zero when the value of the associated timeticks
+attribute reaches 497+ days and wraps around to zero.
+
+The associated timeticks schema node must be specified
+in the description of any schema node using this type.
+
+In the value set and its semantics, this type is equivalent
+to the TimeStamp textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2579: Textual Conventions for SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="phys-address"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Represents media- or physical-level addresses represented
+as a sequence octets, each octet represented by two hexadecimal
+numbers. Octets are separated by colons. The canonical
+representation uses lowercase characters.
+
+In the value set and its semantics, this type is equivalent
+to the PhysAddress textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 2579: Textual Conventions for SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="mac-address"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;The mac-address type represents an IEEE 802 MAC address.
+The canonical representation uses lowercase characters.
+
+In the value set and its semantics, this type is equivalent
+to the MacAddress textual convention of the SMIv2.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;IEEE 802: IEEE Standard for Local and Metropolitan Area
+ Networks: Overview and Architecture
+RFC 2579: Textual Conventions for SMIv2&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="xpath1.0"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;This type represents an XPATH 1.0 expression.
+
+When a schema node is defined that uses this type, the
+description of the schema node MUST specify the XPath
+context in which the XPath expression is evaluated.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;XPATH: XML Path Language (XPath) Version 1.0&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="hex-string"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A hexadecimal string with octets represented as hex digits
+separated by colons. The canonical representation uses
+lowercase characters.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="uuid"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;A Universally Unique IDentifier in the string representation
+defined in RFC 4122. The canonical representation uses
+lowercase characters.
+
+The following is an example of a UUID in string representation:
+f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 4122: A Universally Unique IDentifier (UUID) URN
+ Namespace&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="dotted-quad"&gt;
+ &lt;type name="string"&gt;
+ &lt;pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;An unsigned 32-bit number expressed in the dotted-quad
+notation, i.e., four octets written as decimal numbers
+and separated with the '.' (full stop) character.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.groovy
new file mode 100644
index 00000000..2d42afd6
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "lock!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>"; \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/lock/NA/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yang
new file mode 100644
index 00000000..bdbd000c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yang
@@ -0,0 +1,96 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module nc-notifications {
+ namespace "urn:ietf:params:xml:ns:netmod:notification";
+ prefix manageEvent;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ import notifications {
+ prefix ncEvent;
+ }
+
+ organization
+ "IETF NETCONF WG";
+ contact
+ "netconf@ietf.org";
+ description
+ "Conversion of the 'manageEvent' XSD in the NETCONF
+ Notifications RFC.";
+ reference
+ "RFC 5277";
+
+ revision 2008-07-14 {
+ description
+ "RFC 5277 version.";
+ }
+
+ container netconf {
+ config false;
+ description
+ "Top-level element in the notification namespace";
+ container streams {
+ description
+ "The list of event streams supported by the system. When
+ a query is issued, the returned set of streams is
+ determined based on user privileges.";
+ list stream {
+ key "name";
+ min-elements 1;
+ description
+ "Stream name, description and other information.";
+ leaf name {
+ type ncEvent:streamNameType;
+ description
+ "The name of the event stream. If this is the default
+ NETCONF stream, this must have the value 'NETCONF'.";
+ }
+
+ leaf description {
+ type string;
+ mandatory true;
+ description
+ "A description of the event stream, including such
+ information as the type of events that are sent over
+ this stream.";
+ }
+
+ leaf replaySupport {
+ type boolean;
+ mandatory true;
+ description
+ "A description of the event stream, including such
+ information as the type of events that are sent over
+ this stream.";
+ }
+
+ leaf replayLogCreationTime {
+ type yang:date-and-time;
+ description
+ "The timestamp of the creation of the log used to support
+ the replay function on this stream. Note that this might
+ be earlier then the earliest available notification in
+ the log. This object is updated if the log resets for
+ some reason. This object MUST be present if replay is
+ supported.";
+ }
+ }
+ }
+ }
+
+ notification replayComplete {
+ description
+ "This notification is sent to signal the end of a replay
+ portion of a subscription.";
+ }
+
+ notification notificationComplete {
+ description
+ "This notification is sent to signal the end of a notification
+ subscription. It is sent in the case that stopTime was
+ specified during the creation of the subscription..";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yin
new file mode 100644
index 00000000..5f063a03
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/nc-notifications@2008-07-14.yin
@@ -0,0 +1,105 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="nc-notifications"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"
+ xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:netmod:notification"/&gt;
+ &lt;prefix value="manageEvent"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;import module="notifications"&gt;
+ &lt;prefix value="ncEvent"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF WG&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;netconf@ietf.org&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;Conversion of the 'manageEvent' XSD in the NETCONF
+Notifications RFC.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5277&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;revision date="2008-07-14"&gt;
+ &lt;description&gt;
+ &lt;text&gt;RFC 5277 version.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/revision&gt;
+ &lt;container name="netconf"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Top-level element in the notification namespace&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;container name="streams"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of event streams supported by the system. When
+a query is issued, the returned set of streams is
+determined based on user privileges.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="stream"&gt;
+ &lt;key value="name"/&gt;
+ &lt;min-elements value="1"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Stream name, description and other information.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="name"&gt;
+ &lt;type name="ncEvent:streamNameType"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of the event stream. If this is the default
+NETCONF stream, this must have the value 'NETCONF'.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="description"&gt;
+ &lt;type name="string"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A description of the event stream, including such
+information as the type of events that are sent over
+this stream.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="replaySupport"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A description of the event stream, including such
+information as the type of events that are sent over
+this stream.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="replayLogCreationTime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The timestamp of the creation of the log used to support
+the replay function on this stream. Note that this might
+be earlier then the earliest available notification in
+the log. This object is updated if the log resets for
+some reason. This object MUST be present if replay is
+supported.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;notification name="replayComplete"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This notification is sent to signal the end of a replay
+portion of a subscription.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/notification&gt;
+ &lt;notification name="notificationComplete"&gt;
+ &lt;description&gt;
+ &lt;text&gt;This notification is sent to signal the end of a notification
+subscription. It is sent in the case that stopTime was
+specified during the creation of the subscription..&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yang
new file mode 100644
index 00000000..9dce5110
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yang
@@ -0,0 +1,92 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module notifications {
+ namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
+ prefix ncEvent;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+
+ organization
+ "IETF NETCONF WG";
+ contact
+ "netconf@ops.ietf.org";
+ description
+ "Conversion of the 'ncEvent' XSD in the
+ NETCONF Notifications RFC.";
+ reference
+ "RFC 5277.";
+
+ revision 2008-07-14 {
+ description
+ "RFC 5277 version.";
+ }
+
+ typedef streamNameType {
+ type string;
+ description
+ "The name of an event stream.";
+ }
+
+ container notification {
+ config false;
+ description
+ "internal struct to start a notification";
+ leaf eventTime {
+ type yang:date-and-time;
+ mandatory true;
+ }
+ }
+
+ rpc create-subscription {
+ description
+ "The command to create a notification subscription. It
+ takes as argument the name of the notification stream
+ and filter. Both of those options limit the content of
+ the subscription. In addition, there are two time-related
+ parameters, startTime and stopTime, which can be used to
+ select the time interval of interest to the notification
+ replay feature.";
+ input {
+ leaf stream {
+ type streamNameType;
+ default "NETCONF";
+ description
+ "An optional parameter that indicates which stream of events
+ is of interest. If not present, then events in the default
+ NETCONF stream will be sent.";
+ }
+
+ anyxml filter {
+ description
+ "An optional parameter that indicates which subset of all
+ possible events is of interest. The format of this
+ parameter is the same as that of the filter parameter
+ in the NETCONF protocol operations. If not present,
+ all events not precluded by other parameters will
+ be sent.";
+ }
+
+ leaf startTime {
+ type yang:date-and-time;
+ description
+ "A parameter used to trigger the replay feature and
+ indicates that the replay should start at the time
+ specified. If start time is not present, this is not a
+ replay subscription.";
+ }
+
+ leaf stopTime {
+ type yang:date-and-time;
+ description
+ "An optional parameter used with the optional replay
+ feature to indicate the newest notifications of
+ interest. If stop time is not present, the notifications
+ will continue until the subscription is terminated.
+ Must be used with startTime.";
+ }
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yin
new file mode 100644
index 00000000..3633d0f1
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/notifications@2008-07-14.yin
@@ -0,0 +1,99 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="notifications"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:ietf-yang-types"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:netconf:notification:1.0"/&gt;
+ &lt;prefix value="ncEvent"/&gt;
+ &lt;import module="ietf-yang-types"&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;IETF NETCONF WG&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;netconf@ops.ietf.org&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;Conversion of the 'ncEvent' XSD in the
+NETCONF Notifications RFC.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 5277.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;revision date="2008-07-14"&gt;
+ &lt;description&gt;
+ &lt;text&gt;RFC 5277 version.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="streamNameType"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The name of an event stream.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;container name="notification"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;internal struct to start a notification&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="eventTime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;rpc name="create-subscription"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The command to create a notification subscription. It
+takes as argument the name of the notification stream
+and filter. Both of those options limit the content of
+the subscription. In addition, there are two time-related
+parameters, startTime and stopTime, which can be used to
+select the time interval of interest to the notification
+replay feature.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="stream"&gt;
+ &lt;type name="streamNameType"/&gt;
+ &lt;default value="NETCONF"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An optional parameter that indicates which stream of events
+is of interest. If not present, then events in the default
+NETCONF stream will be sent.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;anyxml name="filter"&gt;
+ &lt;description&gt;
+ &lt;text&gt;An optional parameter that indicates which subset of all
+possible events is of interest. The format of this
+parameter is the same as that of the filter parameter
+in the NETCONF protocol operations. If not present,
+all events not precluded by other parameters will
+be sent.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/anyxml&gt;
+ &lt;leaf name="startTime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;A parameter used to trigger the replay feature and
+indicates that the replay should start at the time
+specified. If start time is not present, this is not a
+replay subscription.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="stopTime"&gt;
+ &lt;type name="yang:date-and-time"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An optional parameter used with the optional replay
+feature to indicate the newest notifications of
+interest. If stop time is not present, the notifications
+will continue until the subscription is terminated.
+Must be used with startTime.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/rpc-reply.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/rpc-reply.xml
new file mode 100644
index 00000000..c5ca49bd
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/rpc-reply.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>3</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.groovy
new file mode 100644
index 00000000..b2be5fdb
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "run-until!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"http://example.net/turing-machine\"> <step-count>12</step-count><halted>true</halted></rpc-reply>";
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.xml
new file mode 100644
index 00000000..a2909ffe
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/response.xml
@@ -0,0 +1,3 @@
+<rpc-reply <RPCHEADER>>
+ <data/>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/system/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/system/response.xml
new file mode 100644
index 00000000..46ba494f
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/system/response.xml
@@ -0,0 +1,7 @@
+<rpc-reply <RPCHEADER>>
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <system xmlns="http://acme.example.com/system">
+ <host-name>aaaaa</host-name>
+ </system>
+</data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/turing-machine/response.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/turing-machine/response.xml
new file mode 100644
index 00000000..4a659af3
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/run-until/NA/turing-machine/response.xml
@@ -0,0 +1,76 @@
+<rpc-reply <RPCHEADER>>
+ <data>
+<turing-machine xmlns="http://example.net/turing-machine">
+ <transition-function>
+ <delta>
+ <label>separator</label>
+ <output>
+ <state>4</state>
+ <symbol>1</symbol>
+ </output>
+ <input>
+ <state>0</state>
+ <symbol>0</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>go home</label>
+ <output>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>write separator</label>
+ <output>
+ <state>3</state>
+ <head-move>left</head-move>
+ <symbol>0</symbol>
+ </output>
+ <input>
+ <state>2</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right summand</label>
+ <input>
+ <state>1</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>left summand</label>
+ <input>
+ <state>0</state>
+ <symbol>1</symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>right end</label>
+ <output>
+ <state>2</state>
+ <head-move>left</head-move>
+ </output>
+ <input>
+ <state>1</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ <delta>
+ <label>final step</label>
+ <output>
+ <state>4</state>
+ </output>
+ <input>
+ <state>3</state>
+ <symbol></symbol>
+ </input>
+ </delta>
+ </transition-function>
+</turing-machine>
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply-template.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply-template.xml
new file mode 100644
index 00000000..b063f8ee
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply-template.xml
@@ -0,0 +1 @@
+<SCHEMAREPLY> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply.xml
new file mode 100644
index 00000000..8d2c318a
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/schema-reply.xml
@@ -0,0 +1,270 @@
+<rpc-reply message-id="m-1"
+ xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <data
+ xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+module turing-machine {
+ namespace "http://example.net/turing-machine";
+ prefix tm;
+
+ description
+ "Data model for the Turing Machine.";
+
+ revision 2013-12-27 {
+ description
+ "Initial revision.";
+ }
+
+ typedef tape-symbol {
+ type string {
+ length "0..1";
+ }
+ description
+ "Type of symbols appearing in tape cells.
+
+ A blank is represented as an empty string where necessary.";
+ }
+
+ typedef cell-index {
+ type int64;
+ description
+ "Type for indexing tape cells.";
+ }
+
+ typedef state-index {
+ type uint16;
+ description
+ "Type for indexing states of the control unit.";
+ }
+
+ typedef head-dir {
+ type enumeration {
+ enum "left";
+ enum "right";
+ }
+ default "right";
+ description
+ "Possible directions for moving the read/write head, one cell
+ to the left or right (default).";
+ }
+
+ grouping tape-cells {
+ description
+ "The tape of the Turing Machine is represented as a sparse
+ array.";
+ list cell {
+ key "coord";
+ description
+ "List of non-blank cells.";
+ leaf coord {
+ type cell-index;
+ description
+ "Coordinate (index) of the tape cell.";
+ }
+
+ leaf symbol {
+ type tape-symbol {
+ length "1";
+ }
+ description
+ "Symbol appearing in the tape cell.
+
+ Blank (empty string) is not allowed here because the
+ 'cell' list only contains non-blank cells.";
+ }
+ }
+ }
+
+ container turing-machine {
+ description
+ "State data and configuration of a Turing Machine.";
+ leaf state {
+ type state-index;
+ config false;
+ mandatory true;
+ description
+ "Current state of the control unit.
+
+ The initial state is 0.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ config false;
+ mandatory true;
+ description
+ "Position of tape read/write head.";
+ }
+
+ container tape {
+ config false;
+ description
+ "The contents of the tape.";
+ uses tape-cells;
+ }
+
+ container transition-function {
+ description
+ "The Turing Machine is configured by specifying the
+ transition function.";
+ list delta {
+ key "label";
+ unique "input/state input/symbol";
+ description
+ "The list of transition rules.";
+ leaf label {
+ type string;
+ description
+ "An arbitrary label of the transition rule.";
+ }
+
+ container input {
+ description
+ "Input parameters (arguments) of the transition rule.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "Current state of the control unit.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ mandatory true;
+ description
+ "Symbol read from the tape cell.";
+ }
+ }
+
+ container output {
+ description
+ "Output values of the transition rule.";
+ leaf state {
+ type state-index;
+ description
+ "New state of the control unit. If this leaf is not
+ present, the state doesn't change.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ description
+ "Symbol to be written to the tape cell. If this leaf is
+ not present, the symbol doesn't change.";
+ }
+
+ leaf head-move {
+ type head-dir;
+ description
+ "Move the head one cell to the left or right";
+ }
+ }
+ }
+ }
+ }
+
+ rpc initialize {
+ description
+ "Initialize the Turing Machine as follows:
+
+ 1. Put the control unit into the initial state (0).
+
+ 2. Move the read/write head to the tape cell with coordinate
+ zero.
+
+ 3. Write the string from the 'tape-content' input parameter to
+ the tape, character by character, starting at cell 0. The
+ tape is othewise empty.";
+ input {
+ leaf tape-content {
+ type string;
+ default "";
+ description
+ "The string with which the tape shall be initialized. The
+ leftmost symbol will be at tape coordinate 0.";
+ }
+ }
+ }
+
+ rpc run {
+ description
+ "Start the Turing Machine operation.";
+ }
+
+ rpc run-until {
+ description
+ "Start the Turing Machine operation and let it run until it is halted
+ or ALL the defined breakpoint conditions are satisfied.";
+ input {
+ leaf state {
+ type state-index;
+ description
+ "What state the control unit has to be at for the execution to be paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ description
+ "Position of tape read/write head for which the breakpoint applies.";
+ }
+
+ container tape {
+ description
+ "What content the tape has to have for the breakpoint to apply.";
+ uses tape-cells;
+ }
+ }
+
+ output {
+ leaf step-count {
+ type uint64;
+ description
+ "The number of steps executed since the last 'run-until' call.";
+ }
+
+ leaf halted {
+ type boolean;
+ description
+ "'True' if the Turing machine is halted, 'false' if it is only paused.";
+ }
+ }
+ }
+
+ notification halted {
+ description
+ "The Turing Machine has halted. This means that there is no
+ transition rule for the current state and tape symbol.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "The state of the control unit in which the machine has
+ halted.";
+ }
+ }
+
+ notification paused {
+ description
+ "The Turing machine has reached a breakpoint and was paused.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "State of the control unit in which the machine was paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ mandatory true;
+ description
+ "Position of tape read/write head when the machine was paused.";
+ }
+
+ container tape {
+ description
+ "Content of the tape when the machine was paused.";
+ uses tape-cells;
+ }
+ }
+}
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/schema.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/schema.xml
new file mode 100644
index 00000000..82b2c5d4
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/schema.xml
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-0">
+ <data>
+ <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+ <schemas>
+ <schema>
+ <identifier>RCAPoCModel</identifier>
+ <version>2017-04-27</version>
+ <format>yang</format>
+ <namespace>urn:opendaylight:params:xml:ns:yang:oripWnc</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>RCAPoCModel</identifier>
+ <version>2017-04-27</version>
+ <format>yin</format>
+ <namespace>urn:opendaylight:params:xml:ns:yang:oripWnc</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-metadata</identifier>
+ <version>2016-08-05</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-metadata</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-metadata</identifier>
+ <version>2016-08-05</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-metadata</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>yang</identifier>
+ <version>2017-02-20</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:1</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>yang</identifier>
+ <version>2017-02-20</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:1</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-inet-types</identifier>
+ <version>2013-07-15</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-inet-types</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-inet-types</identifier>
+ <version>2013-07-15</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-inet-types</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-types</identifier>
+ <version>2013-07-15</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-types</identifier>
+ <version>2013-07-15</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-datastores</identifier>
+ <version>2017-08-17</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-datastores</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-datastores</identifier>
+ <version>2017-08-17</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-datastores</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-library</identifier>
+ <version>2017-08-17</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-library</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-yang-library</identifier>
+ <version>2017-08-17</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-library</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-acm</identifier>
+ <version>2012-02-22</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-acm</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-acm</identifier>
+ <version>2012-02-22</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-acm</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf</identifier>
+ <version>2011-06-01</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:netconf:base:1.0</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf</identifier>
+ <version>2011-06-01</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:netconf:base:1.0</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-notifications</identifier>
+ <version>2012-02-06</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-notifications</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-notifications</identifier>
+ <version>2012-02-06</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-notifications</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>notifications</identifier>
+ <version>2008-07-14</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:netconf:notification:1.0</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>notifications</identifier>
+ <version>2008-07-14</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:netconf:notification:1.0</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>nc-notifications</identifier>
+ <version>2008-07-14</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:netmod:notification</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>nc-notifications</identifier>
+ <version>2008-07-14</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:netmod:notification</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>turing-machine</identifier>
+ <version>2013-12-27</version>
+ <format>yang</format>
+ <namespace>http://example.net/turing-machine</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>turing-machine</identifier>
+ <version>2013-12-27</version>
+ <format>yin</format>
+ <namespace>http://example.net/turing-machine</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-interfaces</identifier>
+ <version>2014-05-08</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-interfaces</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-interfaces</identifier>
+ <version>2014-05-08</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-interfaces</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>iana-if-type</identifier>
+ <version>2014-05-08</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:iana-if-type</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>iana-if-type</identifier>
+ <version>2014-05-08</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:iana-if-type</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-ip</identifier>
+ <version>2014-06-16</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-ip</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-ip</identifier>
+ <version>2014-06-16</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-ip</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-x509-cert-to-name</identifier>
+ <version>2014-12-10</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-x509-cert-to-name</identifier>
+ <version>2014-12-10</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-keystore</identifier>
+ <version>2016-10-31</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-keystore</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-keystore</identifier>
+ <version>2016-10-31</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-keystore</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-ssh-server</identifier>
+ <version>2016-11-02</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-ssh-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-ssh-server</identifier>
+ <version>2016-11-02</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-ssh-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-tls-server</identifier>
+ <version>2016-11-02</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-tls-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-tls-server</identifier>
+ <version>2016-11-02</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-tls-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-server</identifier>
+ <version>2016-11-02</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-server</identifier>
+ <version>2016-11-02</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-server</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>iana-crypt-hash</identifier>
+ <version>2014-08-06</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:iana-crypt-hash</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>iana-crypt-hash</identifier>
+ <version>2014-08-06</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:iana-crypt-hash</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-system</identifier>
+ <version>2014-08-06</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-system</identifier>
+ <version>2014-08-06</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-monitoring</identifier>
+ <version>2010-10-04</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-monitoring</identifier>
+ <version>2010-10-04</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-with-defaults</identifier>
+ <version>2011-06-01</version>
+ <format>yang</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults</namespace>
+ <location>NETCONF</location>
+ </schema>
+ <schema>
+ <identifier>ietf-netconf-with-defaults</identifier>
+ <version>2011-06-01</version>
+ <format>yin</format>
+ <namespace>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults</namespace>
+ <location>NETCONF</location>
+ </schema>
+ </schemas>
+ </netconf-state>
+ </data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/schema2.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/schema2.xml
new file mode 100644
index 00000000..ae0f4f6d
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/schema2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rpc-reply message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+<data>
+ <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+ <schemas>
+ <schema>
+ <identifier>bar</identifier>
+ <version>2008-06-01</version>
+ <format>yang</format>
+ <namespace>http://example.com/bar</namespace>
+ <location>NETCONF</location>
+ </schema>
+ </schemas>
+ </netconf-state>
+ </data>
+</rpc-reply>
+]]>]]> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/schema3.xml b/vnfs/TestVNF/netconftemplates/netconftemplates/schema3.xml
new file mode 100644
index 00000000..b288276a
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/schema3.xml
@@ -0,0 +1,197 @@
+<rpc-reply message-id="102"
+ xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <data
+ xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+module toaster {
+
+ namespace "http://netconfcentral.org/ns/toaster";
+
+ prefix "toast";
+
+ organization
+ "Netconf Central";
+
+ contact
+ "Andy Bierman <andy@netconfcentral.org>";
+
+ description
+ "YANG version of the TOASTER-MIB.";
+
+
+ revision 2009-11-20 {
+ description "Toaster module in progress.";
+ }
+
+ identity toast-type {
+ description
+ "Base for all bread types supported by the toaster.
+ New bread types not listed here nay be added in the
+ future.";
+ }
+
+ identity white-bread {
+ description
+ "White bread.";
+ base toast:toast-type;
+ }
+
+ identity wheat-bread {
+ description
+ "Wheat bread.";
+ base toast-type;
+ }
+
+ identity wonder-bread {
+ description
+ "Wonder bread.";
+ base toast-type;
+ }
+
+ identity frozen-waffle {
+ description
+ "Frozen waffle.";
+ base toast-type;
+ }
+
+ identity frozen-bagel {
+ description
+ "Frozen bagel.";
+ base toast-type;
+ }
+
+ identity hash-brown {
+ description
+ "Hash browned potatos.";
+ base toast-type;
+ }
+
+ typedef DisplayString {
+ description
+ "YANG version of the SMIv2 DisplayString TEXTUAL-CONVENTION.";
+ reference "RFC 2579, section 2.";
+ type string {
+ length "0 .. 255";
+ }
+ }
+
+ container toaster {
+ presence
+ "Indicates the toaster service is available";
+
+ description
+ "Top-level container for all toaster database objects.";
+
+ leaf toasterManufacturer {
+ type DisplayString;
+ config false;
+ mandatory true;
+ description
+ "The name of the toaster's manufacturer. For instance,
+ Microsoft Toaster.";
+ }
+
+ leaf toasterModelNumber {
+ type DisplayString;
+ config false;
+ mandatory true;
+ description
+ "The name of the toaster's model. For instance,
+ Radiant Automatic.";
+ }
+
+ leaf toasterStatus {
+ type enumeration {
+ enum up {
+ value 1;
+ description
+ "The toaster knob position is up.
+ No toast is being made now.";
+ }
+ enum down {
+ value 2;
+ description
+ "The toaster knob position is down.
+ Toast is being made now.";
+
+ }
+ }
+ config false;
+ mandatory true;
+ description
+ "This variable indicates the current state of
+ the toaster.";
+ }
+ }
+
+ rpc make-toast {
+ description
+ "Make some toast.
+ The toastDone notification will be sent when
+ the toast is finished.
+ An 'in-use' error will be returned if toast
+ is already being made.
+ A 'resource-denied' error will be returned
+ if the toaster service is disabled.";
+ input {
+ leaf toasterDoneness {
+ type uint32 {
+ range "1 .. 10";
+ }
+ default 5;
+ description
+ "This variable controls how well-done is the
+ ensuing toast. It should be on a scale of 1 to 10.
+ Toast made at 10 generally is considered unfit
+ for human consumption; toast made at 1 is warmed
+ lightly.";
+ }
+ leaf toasterToastType {
+ type identityref {
+ base toast:toast-type;
+ }
+ default toast:wheat-bread;
+ description
+ "This variable informs the toaster of the type of
+ material that is being toasted. The toaster
+ uses this information, combined with
+ toasterDoneness, to compute for how
+ long the material must be toasted to achieve
+ the required doneness.";
+ }
+ }
+ }
+
+ rpc cancel-toast {
+ description
+ "Stop making toast, if any is being made.
+ A 'resource-denied' error will be returned
+ if the toaster service is disabled.";
+ }
+
+ notification toastDone {
+ description
+ "Indicates that the toast in progress has completed.";
+
+ leaf toastStatus {
+ description
+ "Indicates the final toast status";
+ type enumeration {
+ enum done {
+ description
+ "The toast is done.";
+ }
+ enum cancelled {
+ description
+ "The toast was cancelled.";
+ }
+ enum error {
+ description
+ "The toaster service was disabled or
+ the toaster is broken.";
+ }
+ }
+ }
+ }
+}
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/send-event-schema.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/send-event-schema.yang
new file mode 100644
index 00000000..ffc5b6d2
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/send-event-schema.yang
@@ -0,0 +1,19 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="<MID>">
+ <data xmlns="http://example.net/send-event-method/1.0">
+ rpc send-event {
+ description
+ "The &lt;send-event&gt; operation takes in a content in JSON format and sends the entire content to the specified target address.";
+
+ container config {
+ leaf target-name {
+ type string;
+ description "name of the target to which the content is to be sent";
+ }
+ }
+ leaf content {
+ type string;
+ description "JSON string to be sent";
+ }
+ }
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/send-event/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/send-event/NA/response.groovy
new file mode 100644
index 00000000..dbd1c0aa
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/send-event/NA/response.groovy
@@ -0,0 +1,94 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+import com.ericsson.testvnf.server.models.RpcData;
+import groovy.sql.Sql;
+import groovy.util.XmlParser
+import java.util.logging.Logger;
+Logger logger = Logger.getLogger("")
+
+println "send-event!"
+def RpcData data = binding.getVariable("RpcData")
+result = "ignore"
+try{
+ def operationsData = new XmlParser().parseText(data.getOperationTagContent())
+ println "operations data::::" + operationsData
+
+ def targetName
+ if (!operationsData.config.'target-name'.isEmpty()){
+ targetName = operationsData.config.'target-name'.text()
+ println "target-name ::::" + operationsData.config.'target-name'.text()
+
+ logger.info("in the groovy file. going to open a database session.")
+ def db = [url: "jdbc:mariadb://localhost:3306/netconf_db?useSSL=false",
+ user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ // def db = [url: "jdbc:mariadb://mariadb:3306/netconf_db?useSSL=false",
+ // user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
+ println "DB connection ready"
+ logger.info("DB connection ready")
+ def metadata = sql.connection.getMetaData()
+ def tables = metadata.getTables(null, null, "AddressTable", null)
+ def targetURL = ""
+ if (!tables.next()) {
+ logger.info("table not found");
+ println "table not found"
+ sql.execute("CREATE TABLE AddressTable (Name varchar(255), HTTPAddress varchar(255), PRIMARY KEY (Name))")
+ }else{
+ def query = "select HTTPAddress from AddressTable where Name=\"".concat(targetName).concat("\"")
+ println "query" + query
+ logger.info(query)
+ sql.eachRow(query, { res ->
+ println "sending JSON data to "+res.HTTPAddress
+ targetURL = res.HTTPAddress
+ })
+ }
+ println "targetURL:"+targetURL
+ logger.info(targetURL)
+ if(targetURL!="") {
+ def post = new URL(targetURL).openConnection();
+ def message = operationsData.content.text()
+ post.setRequestMethod("POST")
+ post.setDoOutput(true)
+ post.setRequestProperty("Content-Type", "application/json")
+ post.getOutputStream().write(message.getBytes("UTF-8"));
+ def postRC = post.getResponseCode();
+ println(postRC);
+ if(postRC.equals(200)) {
+ println(post.getInputStream().getText());
+ result = "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
+ }
+ }else {
+ println "No url found in database.."
+ logger.info("no url found in database")
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">No url found in database</error-message></rpc-error></rpc-reply>"
+ }
+ } else{
+ logger.info("targetName not found");
+ println("targetName not found")
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">No target name in request</error-message></rpc-error></rpc-reply>"
+ }
+}
+catch (Exception e)
+{
+ e.printStackTrace();
+}
+
+return result;
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/send-models-schema.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/send-models-schema.yang
new file mode 100644
index 00000000..cb13b613
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/send-models-schema.yang
@@ -0,0 +1,19 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="<MID>">
+ <data xmlns="http://example.net/send-models-method/1.0">
+ rpc send-models {
+ description
+ "The &lt;send-models&gt; operation takes in a content in JSON format and sends the entire content to the specified target address.";
+
+ container config {
+ leaf target-name {
+ type string;
+ description "name of the target to which all the events are to be sent";
+ }
+ }
+ leaf content {
+ type string;
+ description "JSON string to be sent, which contains all the events to be sent";
+ }
+ }
+ </data>
+</rpc-reply> \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/send-models/NA/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/send-models/NA/response.groovy
new file mode 100644
index 00000000..d45fea4e
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/send-models/NA/response.groovy
@@ -0,0 +1,133 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+import com.ericsson.testvnf.server.models.RpcData;
+
+import java.util.concurrent.TimeUnit;
+import groovy.sql.Sql;
+import groovy.util.XmlParser
+import java.util.logging.Logger;
+import groovy.json.JsonSlurper
+import groovy.json.JsonOutput
+
+Logger logger = Logger.getLogger("")
+
+println "send-models!"
+def RpcData data = binding.getVariable("RpcData")
+Object connectionResetMap = binding.getVariable("connectionResetMap")
+println "connectionResetMap:" + connectionResetMap.get(data.getTargetName())
+result = "ignore"
+try{
+ def operationsData = new XmlParser().parseText(data.getOperationTagContent())
+ println "operations data::::" + operationsData
+
+ def targetName
+ if (!operationsData.config.'target-name'.isEmpty()){
+ targetName = operationsData.config.'target-name'.text()
+ println "target-name ::::" + operationsData.config.'target-name'.text()
+
+ logger.info("in the groovy file. going to open a database session.")
+ def db = [url: "jdbc:mariadb://localhost:3306/netconf_db?useSSL=false",
+ user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ // def db = [url: "jdbc:mariadb://mariadb:3306/netconf_db?useSSL=false",
+ // user: "root", password: "root", driver: 'org.mariadb.jdbc.Driver']
+ def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
+ println "DB connection ready"
+ logger.info("DB connection ready")
+ def metadata = sql.connection.getMetaData()
+ def tables = metadata.getTables(null, null, "AddressTable", null)
+ def targetURL = ""
+ if (!tables.next()) {
+ logger.info("table not found");
+ println "table not found"
+ sql.execute("CREATE TABLE AddressTable (Name varchar(255), HTTPAddress varchar(255), PRIMARY KEY (Name))")
+ }else{
+ def query = "select HTTPAddress from AddressTable where Name=\"".concat(targetName).concat("\"")
+ println "query" + query
+ logger.info(query)
+ sql.eachRow(query, { res ->
+ println "sending JSON data to "+res.HTTPAddress
+ targetURL = res.HTTPAddress
+ })
+ }
+ println "targetURL:"+targetURL
+ logger.info(targetURL)
+ if(targetURL!="") {
+ def url = url = new URL(targetURL)
+
+ def message = operationsData.content.text()
+ def jsonSlurper = new JsonSlurper()
+ Object jsonData = jsonSlurper.parseText(message)
+ for (i=0; i<jsonData.size(); i++){
+ def post = url.openConnection();
+ post.setRequestMethod("POST")
+ post.setDoOutput(true)
+ post.setRequestProperty("Content-Type", "application/json")
+
+ println "connectionResetMap:" + connectionResetMap.get(data.getTargetName())
+ if (connectionResetMap.get(data.getTargetName())){
+ println "ConfigUpdate received. Sending a final event."
+ post.getOutputStream().write('{"event":{"commonEventHeader":{"startEpochMicrosec":1.53456715899E+12,"sourceId":"mmisVnfName","sequence":1910,"eventId":"ManagedElement=1","domain":"other","lastEpochMicrosec":1.53805815899E+12,"eventName":"PM_ManagedElement=1","internalHeaderFields":{"collectorTimeStamp":"Thu, 09 27 2018 02:22:48 GMT"},"sourceName":"000.111.222.333:4002","priority":"Low","version":2,"reportingEntityName":"ManagedElement=1"},"otherField":{"nameValuePairs":[{"name":"StartTime","value":"2018-1-26 8:49:50"},{"name":"WEB04NY_tej","value":"406"}],"otherFieldVersion":2}}}'.getBytes("UTF-8"))
+ def postRC = post.getResponseCode();
+ println(postRC);
+ if(postRC.equals(200)) {
+ println(post.getInputStream().getText());
+ result = "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
+ } else{
+ println "Final event not accepted. Respnse code "+ postRC+ " received."
+ }
+ break
+ }
+
+ def eventMessage = JsonOutput.toJson(jsonData[i])
+ println "sending event " + i + ":" + eventMessage
+ post.getOutputStream().write(eventMessage.getBytes("UTF-8"));
+ def postRC = post.getResponseCode();
+ println(postRC);
+ if(postRC.equals(200)) {
+ println(post.getInputStream().getText());
+ result = "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
+ } else{
+ println "Event not accepted. Response code "+ postRC+ " received."
+ }
+ if(i==jsonData.size()-1){
+ i=-1
+ }
+
+ println "sleeping for "+Long.valueOf(data.getTimeDelayForSendingEvents())+" milliseconds.."
+ sleep(Long.valueOf(data.getTimeDelayForSendingEvents()))
+
+ }
+ }else {
+ println "No url found in database.."
+ logger.info("no url found in database")
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">No url found in database</error-message></rpc-error></rpc-reply>"
+ }
+ } else{
+ logger.info("targetName not found");
+ println("targetName not found")
+ result = "<rpc-reply message-id=\\\"<MID>\\\" xmlns=\\\"urn:ietf:params:xml:ns:netconf:base:1.0\\\"> <rpc-error><error-type>application</error-type><error-message xml:lang=\"en\">No target name in request</error-message></rpc-error></rpc-reply>"
+ }
+}
+catch (Exception e)
+{
+ e.printStackTrace();
+}
+return result; \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/server-config.properties b/vnfs/TestVNF/netconftemplates/netconftemplates/server-config.properties
new file mode 100644
index 00000000..a88f5f71
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/server-config.properties
@@ -0,0 +1,2 @@
+host = 0.0.0.0
+port = 2052 \ No newline at end of file
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yang
new file mode 100644
index 00000000..2a5a94f7
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yang
@@ -0,0 +1,267 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module turing-machine {
+ namespace "http://example.net/turing-machine";
+ prefix tm;
+
+ description
+ "Data model for the Turing Machine.";
+
+ revision 2013-12-27 {
+ description
+ "Initial revision.";
+ }
+
+ typedef tape-symbol {
+ type string {
+ length "0..1";
+ }
+ description
+ "Type of symbols appearing in tape cells.
+
+ A blank is represented as an empty string where necessary.";
+ }
+
+ typedef cell-index {
+ type int64;
+ description
+ "Type for indexing tape cells.";
+ }
+
+ typedef state-index {
+ type uint16;
+ description
+ "Type for indexing states of the control unit.";
+ }
+
+ typedef head-dir {
+ type enumeration {
+ enum "left";
+ enum "right";
+ }
+ default "right";
+ description
+ "Possible directions for moving the read/write head, one cell
+ to the left or right (default).";
+ }
+
+ grouping tape-cells {
+ description
+ "The tape of the Turing Machine is represented as a sparse
+ array.";
+ list cell {
+ key "coord";
+ description
+ "List of non-blank cells.";
+ leaf coord {
+ type cell-index;
+ description
+ "Coordinate (index) of the tape cell.";
+ }
+
+ leaf symbol {
+ type tape-symbol {
+ length "1";
+ }
+ description
+ "Symbol appearing in the tape cell.
+
+ Blank (empty string) is not allowed here because the
+ 'cell' list only contains non-blank cells.";
+ }
+ }
+ }
+
+ container turing-machine {
+ description
+ "State data and configuration of a Turing Machine.";
+ leaf state {
+ type state-index;
+ config false;
+ mandatory true;
+ description
+ "Current state of the control unit.
+
+ The initial state is 0.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ config false;
+ mandatory true;
+ description
+ "Position of tape read/write head.";
+ }
+
+ container tape {
+ config false;
+ description
+ "The contents of the tape.";
+ uses tape-cells;
+ }
+
+ container transition-function {
+ description
+ "The Turing Machine is configured by specifying the
+ transition function.";
+ list delta {
+ key "label";
+ unique "input/state input/symbol";
+ description
+ "The list of transition rules.";
+ leaf label {
+ type string;
+ description
+ "An arbitrary label of the transition rule.";
+ }
+
+ container input {
+ description
+ "Input parameters (arguments) of the transition rule.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "Current state of the control unit.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ mandatory true;
+ description
+ "Symbol read from the tape cell.";
+ }
+ }
+
+ container output {
+ description
+ "Output values of the transition rule.";
+ leaf state {
+ type state-index;
+ description
+ "New state of the control unit. If this leaf is not
+ present, the state doesn't change.";
+ }
+
+ leaf symbol {
+ type tape-symbol;
+ description
+ "Symbol to be written to the tape cell. If this leaf is
+ not present, the symbol doesn't change.";
+ }
+
+ leaf head-move {
+ type head-dir;
+ description
+ "Move the head one cell to the left or right";
+ }
+ }
+ }
+ }
+ }
+
+ rpc initialize {
+ description
+ "Initialize the Turing Machine as follows:
+
+ 1. Put the control unit into the initial state (0).
+
+ 2. Move the read/write head to the tape cell with coordinate
+ zero.
+
+ 3. Write the string from the 'tape-content' input parameter to
+ the tape, character by character, starting at cell 0. The
+ tape is othewise empty.";
+ input {
+ leaf tape-content {
+ type string;
+ default "";
+ description
+ "The string with which the tape shall be initialized. The
+ leftmost symbol will be at tape coordinate 0.";
+ }
+ }
+ }
+
+ rpc run {
+ description
+ "Start the Turing Machine operation.";
+ }
+
+ rpc run-until {
+ description
+ "Start the Turing Machine operation and let it run until it is halted
+ or ALL the defined breakpoint conditions are satisfied.";
+ input {
+ leaf state {
+ type state-index;
+ description
+ "What state the control unit has to be at for the execution to be paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ description
+ "Position of tape read/write head for which the breakpoint applies.";
+ }
+
+ container tape {
+ description
+ "What content the tape has to have for the breakpoint to apply.";
+ uses tape-cells;
+ }
+ }
+
+ output {
+ leaf step-count {
+ type uint64;
+ description
+ "The number of steps executed since the last 'run-until' call.";
+ }
+
+ leaf halted {
+ type boolean;
+ description
+ "'True' if the Turing machine is halted, 'false' if it is only paused.";
+ }
+ }
+ }
+
+ notification halted {
+ description
+ "The Turing Machine has halted. This means that there is no
+ transition rule for the current state and tape symbol.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "The state of the control unit in which the machine has
+ halted.";
+ }
+ }
+
+ notification paused {
+ description
+ "The Turing machine has reached a breakpoint and was paused.";
+ leaf state {
+ type state-index;
+ mandatory true;
+ description
+ "State of the control unit in which the machine was paused.";
+ }
+
+ leaf head-position {
+ type cell-index;
+ mandatory true;
+ description
+ "Position of tape read/write head when the machine was paused.";
+ }
+
+ container tape {
+ description
+ "Content of the tape when the machine was paused.";
+ uses tape-cells;
+ }
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yin
new file mode 100644
index 00000000..7654999c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/turing-machine@2013-12-27.yin
@@ -0,0 +1,281 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="turing-machine"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:tm="http://example.net/turing-machine"&gt;
+ &lt;namespace uri="http://example.net/turing-machine"/&gt;
+ &lt;prefix value="tm"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Data model for the Turing Machine.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2013-12-27"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/revision&gt;
+ &lt;typedef name="tape-symbol"&gt;
+ &lt;type name="string"&gt;
+ &lt;length value="0..1"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type of symbols appearing in tape cells.
+
+A blank is represented as an empty string where necessary.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="cell-index"&gt;
+ &lt;type name="int64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type for indexing tape cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="state-index"&gt;
+ &lt;type name="uint16"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Type for indexing states of the control unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;typedef name="head-dir"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="left"/&gt;
+ &lt;enum name="right"/&gt;
+ &lt;/type&gt;
+ &lt;default value="right"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Possible directions for moving the read/write head, one cell
+to the left or right (default).&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/typedef&gt;
+ &lt;grouping name="tape-cells"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The tape of the Turing Machine is represented as a sparse
+array.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="cell"&gt;
+ &lt;key value="coord"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;List of non-blank cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="coord"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Coordinate (index) of the tape cell.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"&gt;
+ &lt;length value="1"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol appearing in the tape cell.
+
+Blank (empty string) is not allowed here because the
+'cell' list only contains non-blank cells.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/list&gt;
+ &lt;/grouping&gt;
+ &lt;container name="turing-machine"&gt;
+ &lt;description&gt;
+ &lt;text&gt;State data and configuration of a Turing Machine.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Current state of the control unit.
+
+The initial state is 0.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;config value="false"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;config value="false"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The contents of the tape.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;container name="transition-function"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing Machine is configured by specifying the
+transition function.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;list name="delta"&gt;
+ &lt;key value="label"/&gt;
+ &lt;unique tag="input/state input/symbol"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The list of transition rules.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="label"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;An arbitrary label of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="input"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Input parameters (arguments) of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Current state of the control unit.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol read from the tape cell.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;container name="output"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Output values of the transition rule.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;New state of the control unit. If this leaf is not
+present, the state doesn't change.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="symbol"&gt;
+ &lt;type name="tape-symbol"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Symbol to be written to the tape cell. If this leaf is
+not present, the symbol doesn't change.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-move"&gt;
+ &lt;type name="head-dir"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Move the head one cell to the left or right&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/container&gt;
+ &lt;/list&gt;
+ &lt;/container&gt;
+ &lt;/container&gt;
+ &lt;rpc name="initialize"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initialize the Turing Machine as follows:
+
+1. Put the control unit into the initial state (0).
+
+2. Move the read/write head to the tape cell with coordinate
+ zero.
+
+3. Write the string from the 'tape-content' input parameter to
+ the tape, character by character, starting at cell 0. The
+ tape is othewise empty.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="tape-content"&gt;
+ &lt;type name="string"/&gt;
+ &lt;default value=""/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The string with which the tape shall be initialized. The
+leftmost symbol will be at tape coordinate 0.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/input&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="run"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Start the Turing Machine operation.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/rpc&gt;
+ &lt;rpc name="run-until"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Start the Turing Machine operation and let it run until it is halted
+or ALL the defined breakpoint conditions are satisfied.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;input&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;What state the control unit has to be at for the execution to be paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head for which the breakpoint applies.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;description&gt;
+ &lt;text&gt;What content the tape has to have for the breakpoint to apply.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;/input&gt;
+ &lt;output&gt;
+ &lt;leaf name="step-count"&gt;
+ &lt;type name="uint64"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The number of steps executed since the last 'run-until' call.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="halted"&gt;
+ &lt;type name="boolean"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;'True' if the Turing machine is halted, 'false' if it is only paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/output&gt;
+ &lt;/rpc&gt;
+ &lt;notification name="halted"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing Machine has halted. This means that there is no
+transition rule for the current state and tape symbol.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;The state of the control unit in which the machine has
+halted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;/notification&gt;
+ &lt;notification name="paused"&gt;
+ &lt;description&gt;
+ &lt;text&gt;The Turing machine has reached a breakpoint and was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;leaf name="state"&gt;
+ &lt;type name="state-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;State of the control unit in which the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;leaf name="head-position"&gt;
+ &lt;type name="cell-index"/&gt;
+ &lt;mandatory value="true"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;Position of tape read/write head when the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;/leaf&gt;
+ &lt;container name="tape"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Content of the tape when the machine was paused.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;uses name="tape-cells"/&gt;
+ &lt;/container&gt;
+ &lt;/notification&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/validate/candidate/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/validate/candidate/response.groovy
new file mode 100644
index 00000000..2529739c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/validate/candidate/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "validate-candidate datastore!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/validate/running/response.groovy b/vnfs/TestVNF/netconftemplates/netconftemplates/validate/running/response.groovy
new file mode 100644
index 00000000..d9b82e07
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/validate/running/response.groovy
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+println "validate-running datastore!"
+return "<rpc-reply message-id=\"<MID>\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\"> <ok/> </rpc-reply>";
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yang b/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yang
new file mode 100644
index 00000000..0d3bec9c
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yang
@@ -0,0 +1,78 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module yang {
+ namespace "urn:ietf:params:xml:ns:yang:1";
+ prefix yang;
+
+ import ietf-yang-metadata {
+ prefix md;
+ revision-date 2016-08-05;
+ }
+
+ organization
+ "libyang";
+ contact
+ "Web: &lt;https://github.com/CESNET/libyang/&gt;
+ Author: Radek Krejci &lt;rkrejci@cesnet.cz&gt;";
+ description
+ "This is a kind of fake model with no data, typedefs or anything
+ else. libyang uses this module to implement various YANG attributes
+ defined in RFC 6020.";
+
+ revision 2017-02-20 {
+ description
+ "Added metadata for NETCONF's edit-config manipulation with ordered
+ lists and leaf-lists.";
+ reference
+ "RFC 7950: The YANG 1.1 Data Modeling Language";
+ }
+ revision 2016-02-11 {
+ description
+ "Initial revision";
+ reference
+ "RFC 6020: YANG - A Data Modeling Language for
+ the Network Configuration Protocol (NETCONF)";
+ }
+
+ md:annotation "insert" {
+ type enumeration {
+ enum "first";
+ enum "last";
+ enum "before";
+ enum "after";
+ }
+ description
+ "In user ordered leaf-list, the attribute can be used to control
+ where in the leaf-list the entry is inserted. It can be used during
+ the NETCONF &lt;edit-config&gt; \"create\" operations to insert a new list or
+ leaf-list entry, or during \"merge\" or \"replace\" operations to insert
+ a new list or leaf-list entry or move an existing one.
+
+ If the value is \"before\" or \"after\", the \"value\"/\"key\" attribute
+ MUST also be used to specify an existing entry in the list or leaf-list.
+
+ If no \"insert\" attribute is present in the \"create\" operation, it
+ defaults to \"last\".";
+ reference
+ "RFC7950 section 7.8.6. and section 7.7.9.";
+ }
+ md:annotation "value" {
+ type string;
+ description
+ "In user ordered leaf-list, the attribute must be used if the attribute
+ insert is used and specifies before/after which existing instance the
+ new instance should be inserted.";
+ reference
+ "RFC7950 section 7.7.9.";
+ }
+ md:annotation "key" {
+ type string;
+ description
+ "In user ordered list, the attribute must be used if the attribute
+ insert is used and specifies before/after which existing instance the
+ new instance should be inserted.";
+ reference
+ "RFC7950 section 7.8.6.";
+ }
+}
+</data>
+</rpc-reply>
diff --git a/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yin b/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yin
new file mode 100644
index 00000000..7a4d5846
--- /dev/null
+++ b/vnfs/TestVNF/netconftemplates/netconftemplates/yang@2017-02-20.yin
@@ -0,0 +1,91 @@
+<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-1">
+ <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;module name="yang"
+ xmlns="urn:ietf:params:xml:ns:yang:yin:1"
+ xmlns:yang="urn:ietf:params:xml:ns:yang:1"
+ xmlns:md="urn:ietf:params:xml:ns:yang:ietf-yang-metadata"&gt;
+ &lt;namespace uri="urn:ietf:params:xml:ns:yang:1"/&gt;
+ &lt;prefix value="yang"/&gt;
+ &lt;import module="ietf-yang-metadata"&gt;
+ &lt;prefix value="md"/&gt;
+ &lt;revision-date date="2016-08-05"/&gt;
+ &lt;/import&gt;
+ &lt;organization&gt;
+ &lt;text&gt;libyang&lt;/text&gt;
+ &lt;/organization&gt;
+ &lt;contact&gt;
+ &lt;text&gt;Web: &amp;lt;https://github.com/CESNET/libyang/&amp;gt;
+Author: Radek Krejci &amp;lt;rkrejci@cesnet.cz&amp;gt;&lt;/text&gt;
+ &lt;/contact&gt;
+ &lt;description&gt;
+ &lt;text&gt;This is a kind of fake model with no data, typedefs or anything
+else. libyang uses this module to implement various YANG attributes
+defined in RFC 6020.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;revision date="2017-02-20"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Added metadata for NETCONF's edit-config manipulation with ordered
+lists and leaf-lists.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 7950: The YANG 1.1 Data Modeling Language&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;revision date="2016-02-11"&gt;
+ &lt;description&gt;
+ &lt;text&gt;Initial revision&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC 6020: YANG - A Data Modeling Language for
+the Network Configuration Protocol (NETCONF)&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/revision&gt;
+ &lt;md:annotation name="insert"&gt;
+ &lt;type name="enumeration"&gt;
+ &lt;enum name="first"/&gt;
+ &lt;enum name="last"/&gt;
+ &lt;enum name="before"/&gt;
+ &lt;enum name="after"/&gt;
+ &lt;/type&gt;
+ &lt;description&gt;
+ &lt;text&gt;In user ordered leaf-list, the attribute can be used to control
+where in the leaf-list the entry is inserted. It can be used during
+the NETCONF &amp;lt;edit-config&amp;gt; &amp;quot;create&amp;quot; operations to insert a new list or
+leaf-list entry, or during &amp;quot;merge&amp;quot; or &amp;quot;replace&amp;quot; operations to insert
+a new list or leaf-list entry or move an existing one.
+
+If the value is &amp;quot;before&amp;quot; or &amp;quot;after&amp;quot;, the &amp;quot;value&amp;quot;/&amp;quot;key&amp;quot; attribute
+MUST also be used to specify an existing entry in the list or leaf-list.
+
+If no &amp;quot;insert&amp;quot; attribute is present in the &amp;quot;create&amp;quot; operation, it
+defaults to &amp;quot;last&amp;quot;.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC7950 section 7.8.6. and section 7.7.9.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/md:annotation&gt;
+ &lt;md:annotation name="value"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;In user ordered leaf-list, the attribute must be used if the attribute
+insert is used and specifies before/after which existing instance the
+new instance should be inserted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC7950 section 7.7.9.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/md:annotation&gt;
+ &lt;md:annotation name="key"&gt;
+ &lt;type name="string"/&gt;
+ &lt;description&gt;
+ &lt;text&gt;In user ordered list, the attribute must be used if the attribute
+insert is used and specifies before/after which existing instance the
+new instance should be inserted.&lt;/text&gt;
+ &lt;/description&gt;
+ &lt;reference&gt;
+ &lt;text&gt;RFC7950 section 7.8.6.&lt;/text&gt;
+ &lt;/reference&gt;
+ &lt;/md:annotation&gt;
+&lt;/module&gt;
+</data>
+</rpc-reply>