Radek,
I am researching the suitability of libnetconf for a project and I have several questions about its RFC compliance for NETCONF and YANG. I was able to answer most of my questions by examining the code and building a test-server, but there are many that I could not figure out on my own.
Sorry for asking these questions off-list.
Can you help out here?
RFC 6241 - NETCONF protocol
Can you give a statement about libnetconf's RFC 6241 compliance? If you have a section-by-section list, that would be incredible. Otherwise, could you provide a quick summary of those areas you know are not yet supported?
Additionally (if not included in the above), please let me know if the following are supported:
4.3 - <rpc-error> Element
The RFC says:
A server MUST NOT return application-level- or data-model-specific error information in an <rpc-error> element for which the client does not have sufficient access rights.
Is this supported correctly? How are rights determined?
4.5 - Pipelining
The RFC says:
NETCONF <rpc> requests MUST be processed serially by the managed device. Additional <rpc> requests MAY be sent before previous ones have been completed. The managed device MUST send responses only in the order the requests were received.
Is this supported? I assume the two-layer server supoorts this via a queue in the second-layer server. What about single-layer servers? I know there is some shared memory used to coordinate/monitor sessions, but does that enforce ordering as well?
6 - Subtree Filtering
Are all the subtree filtering features supported? If not, what is not supported?
7.9 - <kill-session>
Is this supported? Looking at the netopeer code, I don't think it is. Is this something that could be implemented by the server (like how <close-session> is supported via server code.)
8.4 - Confirmed Commit Capability
I don't think this is supported. Is this planned for a future release?
8.9 - XPath Capability
I don't think this is supported. Is this planned for a future release?
RFC 5277 - NETCONF Event Notifications
To what extent is libnetconf compliant with RFC 5277. I know there are APIs for notifications, but when I tried to use them (in a private server modeled after netopeer's single-layer server), no notifications were actually sent on the SSH session.
Also, is there documentation or sample code that I might have missed for how a server must implement the <create-subscription> command? What I saw in netopeer doesn't look like it does anything at all, but maybe I missed something there.
RFC 6470 - NETCONF Base Notifications
Are all of these notifications generated by libnetconf? The capabilities exchange indicates support for yang:ietf-netconf-notifications, but is that support complete? If I manage to get <create-subscription> to work, will I start to see these notifications generated at the appropriate time?
RFC 6243 - with-defaults capability
Is this supported? The <hello> message says it is.
YANG language capability
Based on posts to the mailing lists, I have the following list of YANG features that are not supported:
- typedefs are used during validation (since schematron supports them) but libnetconf itself does not
- XPath is supported by Schematron so it can be used for validation, but libnetconf itself does not support it, so it can't be used for filtering or other areas beyond validation.
- The following keywords are not supported:
- deviation
- extension
- refine
- submodule and belongs-to
Is this the complete list of unsupported language elements? Is it still accurate?
Finally, can you say something about support for the following YANG elements:
- leafref
- identityref
- "when" and "must" rules
Thanks in advance for any help you can provide in the area. It is most appreciated.
-- David