The netconfd-pro server supports several enhancements to standard modules.
- NETCONF Monitoring
- NACM Configuration
- NETCONF Operations
- NETCONF Notifications
NETCONF Monitoring Enhancements
Standard Module: ietf-netconf-monitoring
YumaWorks Module: yumaworks-system
Configuration Parameter: --with-yumaworks-system
Configuration Default: true
Configuration Example:
> netconfd-pro --with-yumaworks-system=true
Augment Path: /netconf-state
Enhancement: Backup Configuration Monitoring
augment /ncm:netconf-state: +--ro backup-files +--ro backup-file* [name] +--ro name ywt:NcxFileName +--ro backup-time? yang:date-and-time
Description:
The "backup-files" container is added to the /netconf-state container to report the available backup configuration files that exist as a result of the "backup" operation.
Each "backup-file" entry contains the following leafs:
- leaf name:
- The name of the backup file
- leaf backup-time
- The data and time the backup file was created or last over-written
Example Entry:
<data> <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> <backup-files xmlns="http://yumaworks.com/ns/yumaworks-system"> <backup-file> <name>push1.xml</name> <backup-time>2020-08-29T20:10:23Z</backup-time> </backup-file> <backup-file> <name>push2.xml</name> <backup-time>2020-08-29T20:50:35Z</backup-time> </backup-file> <backup-file> <name>test-snap.xml</name> <backup-time>2020-10-11T20:25:34Z</backup-time> </backup-file> </backup-files> </netconf-state> </data>
Augment Path: /netconf-state/schemas/schema
Enhancement: YANG Module Monitoring
augment /ncm:netconf-state/ncm:schemas/ncm:schema: +--ro conformance? boolean +--ro module-type? enumeration
Description:
The "schema" list is augmented with 2 leafs to provide more detailed information about the YANG module.
This information is now in the ietf-yang-library module, which should be used instead of the "schema" list/
- leaf conformance
- The value 'true' indicates that the server implements the module for conformance.
- The value 'false' indicates that the server only imports the YANG module and does not implement it for conformance
- leaf module-type
- The value 'module' indicates this schema entry represents a YANG module
- The value 'submodule' indicates this schema entry represents a YANG submodule
Example Entry:
<data> <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> <schemas> <schema> <identifier>ietf-netconf</identifier> <version>2011-06-01</version> <format xmlns:ncm="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring" >ncm:yang</format> <namespace>urn:ietf:params:xml:ns:netconf:base:1.0</namespace> <location>NETCONF</location> <conformance xmlns="http://yumaworks.com/ns/yumaworks-system" >true</conformance> <module-type xmlns="http://yumaworks.com/ns/yumaworks-system" >module</module-type> </schema> </schemas> </netconf-state> </data>
NACM Configuration Enhancements
Standard Module: ietf-netconf-acm
YumaWorks Module: yumaworks-system
Configuration Parameter: --with-yumaworks-system
Configuration Default: true
Configuration Example:
> netconfd-pro --with-yumaworks-system=true
Augment Path: /nacm/rule-list/rule/rule-type
Enhancement: NACM Filtering by Module Tag
augment /nacm:nacm/nacm:rule-list/nacm:rule/nacm:rule-type: +--:(module-tags) +--rw module-tag* string
Description:
The "module-tags" case is added to the "rule-type" choice within a NACM rule list entry. This allows the NACM rule to be scoped to the specified list of module tag strings.
The "module-tags" case contains the following leaf-list:
- leaf-list module-tag:
- The name of a module-tag to use to match to the associated NACM rule
Example Entry:
<data> <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> <rule-list> <name>routing-config</name> <group>admin</group> <rule> <name>allow-routing</name> <module-name>*</module-name> <module-tag xmlns="http://yumaworks.com/ns/yumaworks-system" >ietf:routing</module-tag> <access-operations>*</access-operations> <action>permit</action> <comment>allow access to all routing modules</comment> </rule> </rule-list> </nacm> </data>
NETCONF Operation Enhancements
Standard Module: ietf-netconf
YumaWorks Module: yumaworks-system
Configuration Parameter: --with-yumaworks-system
Configuration Default: true
Configuration Example:
> netconfd-pro --with-yumaworks-system=true
Augment Path: /commit/input
Enhancement: Commit Comment
augment /nc:commit/nc:input: +---w comment? string
Description:
The "comment" leaf is added to the "commit" operation input.. This comment appears in the audit-log and debug log outputs.
- leaf comment
- A comment string associated with the edit transaction that is being commited.
Example Operation:
<rpc message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <commit> <comment xmlns="http://yumaworks.com/ns/yumaworks-system" >add NACM rule to allow routing module access</comment> </commit> </rpc>
Augment Path: /get-config/input
Augment Path: /get/input
Enhancement: NETCONF Monitoring Improvements
augment /nc:get-config/nc:input: +---w with-owners? empty +---w depth? union +---w module-tag* string augment /nc:get/nc:input: +---w with-owners? empty +---w depth? union +---w module-tag* string
Description:
Three parameters which modify the retrieval request are provided:
- leaf with-owners
- If 'true' then include metadata to identify the owner of the configuration data. If the --save-owners parameter is set to 'true' then the owner strings can be retrieved with configuration data.
- leaf depth
- The RESTCONF "depth" parameter is supported for the"get-config" operation. This is used to limit the depth of the subtrees returned in the response.
- leaf-list module-tag
- A list of module tags that should be used as a filter to return data from modules that match at least one of the module tags.
Example Request:
<rpc message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <get-config> <source> <running/> </source> <depth xmlns="http://yumaworks.com/ns/yumaworks-system" >4</depth> <module-tag xmlns="http://yumaworks.com/ns/yumaworks-system" >ietf:security</module-tag> <with-owners xmlns="http://yumaworks.com/ns/yumaworks-system"/> </get-config> </rpc>
Example Response:
<rpc-reply message-id="1" xmlns:ya="http://yumaworks.com/ns/yumaworks-attrs" xmlns:ncx="http://netconfcentral.org/ns/yuma-ncx" ncx:last-modified="2020-10-24T21:27:09Z" ncx:etag="540" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data> <nacm ya:owner="andy" xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> <rule-list> <name>routing-config</name> <group>admin</group> <rule/> </rule-list> </nacm> </data> </rpc-reply>
Augment Path: /copy-config/input
Enhancement: Configuration Management Improvements
augment /nc:copy-config/nc:input: +---w with-owners? empty +---w depth? union
Description:
Two parameters which modify the copy request are provided:
- leaf with-owners
- If 'true' then include metadata to identify the owner of the configuration data. If the --save-owners parameter is set to 'true' then the owner strings can be copied with configuration data.
- leaf depth
- The RESTCONF "depth" parameter is supported for the"get-config" operation. This is used to limit the depth of the subtrees returned in the copy operation.
Example Operation:
<rpc message-id="2" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <copy-config> <target> <url>ftp://admin@192.168.0.21/tmp/copy-config.xml</url> </target> <source> <running/> </source> <depth xmlns="http://yumaworks.com/ns/yumaworks-system">unbounded</depth> <with-defaults xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults">report-all-tagged</with-defaults> <with-owners xmlns="http://yumaworks.com/ns/yumaworks-system"/> </copy-config> </rpc>
Standard Module: ietf-netconf
YumaWorks Module: yumaworks-templates
Configuration Parameter: --with-yumaworks-templates
Configuration Default: true
Configuration Example:
> netconfd-pro --with-yumaworks-templates=true
Augment Path: /edit-config/input
Enhancement: Configuration Management Improvements
augment /nc:edit-config/nc:input: +---w with-template* yang:yang-identifier
Description:
One parameter which requests that a list of configuration templates be applied to the edit operation is provided:
- leaf-list with-template
- Identifies a configuration template to use for this edit operation. The 'target-path' parameter within the template will be matched to data in the configuration request. Templates will be checked in the order given, in case multiple templates for the same data node are provided.
Example Operation:
NETCONF Notification Enhancements
Standard Module: ietf-netconf-notifications
YumaWorks Module: yumaworks-config-change
Configuration Parameter: --with-yumaworks-config-change
Configuration Default: false
Configuration Example:
> netconfd-pro --with-yumaworks-config-change=true
Augment Path: /netconf-config-change/edit
Enhancement: Configuration Monitoring Improvements
augment /ncn:netconf-config-change/ncn:edit: +-- new-value? <anyxml> +-- old-value? <anyxml>
Description:
Two parameters which report the old value and/or new value are added to each "edit" list entry in a "netconf-config-change" notification.
- anyxml new-value
- Contains the new value for the associated 'target' if the operation is not 'delete' or 'remove'. This object should represent a container with one child node specifying the new value used in the associated edit.
- anyxml old-value
- Contains the old value for the associate 'target' that was changed or deleted, if operation is not 'create', This object should represent a container with one child node specifying the current value used in the associated edit
Example Notification:
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2020-10-28T02:35:02Z</eventTime> <netconf-config-change xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"> <changed-by> <username>andy</username> <session-id>3</session-id> <source-host>127.0.0.1</source-host> </changed-by> <datastore>running</datastore> <edit> <target xmlns:nacm="urn:ietf:params:xml:ns:yang:ietf-netconf-acm" >/nacm:nacm/nacm:rule-list[nacm:name="routing-config"]/nacm:rule[nacm:name="allow-routing"]/nacm:comment</target> <operation>replace</operation> <new-value xmlns="http://yumaworks.com/ns/yumaworks-config-change"> <comment xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm">allow access to IETF routing modules</comment> </new-value> <old-value xmlns="http://yumaworks.com/ns/yumaworks-config-change"> <comment xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm">allow access to all routing modules</comment> </old-value> </edit> </netconf-config-change> </notification>