+----------------------------------------------------------------+ | Product : NuDesign ndCONF Builder | | +----------------------------------------------------------------+ NuDesign ndCONF Builder generates C++ extension code for NuDesign's extensible YANG Datastore Server for a given YANG module. It is implemented as an add-on for PYANG. It can be run on LINUX and Windows. Source files along with project files are generated. Required environment: - Python 3.6 or later - pyang 2.4.0 is installed +-----------------+ | Version History | +-----------------+ Version 2.3 Sept. 14, 2023 - NETCONF - call home - new licensing management. - updated code generator ndt3.pyc v 2.34 Version 2.2 Dec. 30, 2022 - ndtGen v 1.5 - correct problem with producing correct directory names. - ndt3.pyc v 2.30 - Support for 'Feature' functionality - Fixed variable naming bug when the top node of an augment is a ‘choice’ construct. - Fixed bug when the leafref does not have a valid path or ‘require-instance’ attribute. - GetIF method was not being generated when there was a grouping within a case statement. - Invalid methods were generated when there was an augment within a case statement. ver 2.1 Apr. 25, 2022 - ndt3.pyc v 2.1 - Code is generated for object attribute ‘ nacm:default-deny-write’ and ‘nacm:default-deny-all’ . - Fixed issue of code not being generated ( notif.cpp and notif.h) for external notifications defined in external groupings. - In a module, same USES is called twice for specifying notifications. Have to figure out the uniqueness of notification names. - notifnames is specificed in the notif classes. Name is checked to see if it is unique, otherwise 2,3,4 is added. - Prefixing grouping names to leafs so that numbers (2,3,4) are not added to provide unique names - Fixed the numbering of augments. Three yangs modules to test augements, top10.yang (this has both independent augement as well as embedded). ndtaugm1.yang has independent augments, ietf-keystore.yang has embedded. - Fixed camelize routine. It was lower casing a capital alphebet precending a number. - Modifications - added mandatory attribute to choice creation. - handling of notifications in USES. - handling of augments in USES - write only attribute for SNMP - Default value for display string - Must has been put - Min max elements are now supported - Mandatory was specified on leaf created - Code generator now quits when it encounters unknown key words (e.g action in yang 1.0) - Naming issues fixed when the choice is within a case statement - Code is being generated for leafref where the referred object is integer or Boolean. Other types we are leaving for the developer to come and put the code in. - Support for anydata added - In Augments, Choice and case names were not properly formed - Multiple Augments, top leaf was the same, the names were not unique, fixed that - Case where top object in Augment was a leaf, child of implicit case. - ndtGen v 1.4 - correct missing projects when build sub projects. - correct problem when yang document has version inf - netconf - add cert revocation. - assorts fixes - restconf - add yang-patch implementation - assorts fixes - cli - correct continual opening and closing of idle remote CLI server port ver 2.0 Nov. 25, 2021 - netconf - add support for TLS, server and client. - restconf - add support for retrieving user group information from RADIUS - correct problem deleting entire list when invalid key information - removed dependencies on ndtsnmp lib. - add processing of "REMOTE_PASSWD" from client. ver 1.15 June 18, 2021 - add stream 'start' event on notification start. - add SYSLOG stream management - add per session recovery of user group information from local host for use with NACM. - restconf-submit-test.html - v 1.8 - set "Scroll Lock" automatically on streams. - event handling for stream 'start' events. - set default of maximum items of 10 (alterable) retained in stream while scroll lock is active. - ndrcstream - correct "keep alive" message timing handling. - correct buffer overrun handling - add handling for stream events. - add SYSLOG streams based on datadll derived from SYSLOG-MSG-MIB (RFC 5676) - mib2xml v1.1.0.0 -fixed trap generation for SMIv2 modules -added version info to mib2xml -added version info in footer of generated mib_...xml file - restconf - v 0.9.9.0 - ndt3.py - v 1.77 - updated code generated for handling SNMPv2-TC:RowStatus. - ndtbase - updated stream handling ver 1.14 May 4, 2021 - restconf - correct crash in some JSON to XML conversion - improve array handling in JSON to XML conversion - correct potential crash in error report handling - enable DELETE to remove individual item from a leaf-list - allow POST to add individual item to a leaf-list - correct potential crash in stream notification handling - add "Missing-namespace" & "Unknown-element" error reporting. - correct request header options in restconf-submit-test.html - change license file name. - ndtbase - external syntax validator - nacm external groups - updated error messages originating from restconf access agents - fixed locking "dirty" candidate datastore - ndtxml - added nsprefix argument to AddChildElement method ver 1.13.4 Mar. 26, 2021 - ndt3.pyc v 1.69 (release only) - remove debug output ver 1.13.3 Mar. 4, 2021 - ndt3.pyc v 1.67 (release only) - fix command line for linking multiple external libraries. ver 1.13.2 Mar. 1,2021 - ndt3.pyc v 1.66 - Fixed the generated the code in template.cpp when the leaf is the child of a case statement. The leaf is in an augment. - Fixed the issue where yang modules were not being copied to the yang directory in the generated code. The yang modules in question were submodules. - gen-info.txt now includes the command line arguments passed to the code generator - fixed bug in impl.cpp where the enum syntax was incorrect - ndtGen v 1.2.2 - correct remaining problem determining location of gen-info.txt - add --ndt-ndtGen-version - correct problem finding yang documents in a schema directories - restconf v.097 - correct problem processing errors. ver 1.13.1 Jan 19 2021 - corrrect introduce problem determining correct primary generation directory and project name ver 1.13 Jan 12 2021 - version sync'd to other SDKs in product family. - ndt3.pyc v 1.60 - updated code generator to v 1.60 includes: - Notifications for Yang 1.1 are supported - Fixed the bug in type Union when accessed through SNMP - restconf v 0.96 - add notification replay with filter, start-time & stop-time. - correct problem with sometimes "loosing" data in JSON to XML conversion. - correct issue in SSE encoding for event streams - correct problem incorrectly returning "201 Created" status on some PUT replace operations. - ndrcstream - change so that it detects and returns 400 status as appropriate. - improve event relay speed. - restconf-submit-test.html v 1.6 - change so that event sessions are cancelled immediately. - change so the EvtSources are deleted after termination so that they don't continue to make requests to the server. - change so that when the request is for an event stream (prefix is /restconf/streams ) and "auto set accept events" is checked, the accept header is automatically set to "text/event-stream". - ndtaanc v 1.6 - updated peer delete handling in netconf aa - fixed handling of start/stop time in create-subscription for datetime with tz offset - ndtsys - fixed releasing "single writer, multiple reader" lock after thread termination - updated BDateTime - ndtaasnmp - updated PostCommit processing for SNMP set(s) - ndtbase - updated copy-config handling - fixed nacm when used by copy-config - yang 1.1 notifications (i.e. notifications tied to data nodes) - add notification enqueing for all streams. - ndtsocket - change stream so as to not cause exception on HUP (or any) signals - ndtGen - change so that equal signs are no longer used in parameter collection. - correct problem determining project names from yang documents. - change buildall so that it should work when invoked from any location. - add version info (1.1) ver 1.7 - Nov 12, 2020 - v 1.55 code generator - Fixed the initial value for leafref object in the startup-cfg-demo.xml - In some cases, the include header file for the imported module was not specified - some bug fixes - update ndtGen man page. - RestCONF - add notification streaming - correct JSON formating problem. - add option to disable automatic update of :startup from :running - add option to have Restconf operate on :candidate with automatic commit operation, instead of :running. - correct issue with PUT causing scope of "replace" to cause removal of peer elements. - add conditional GET with "If-Match" and "If-None-Match". - update the OPTIONS response. - ndtbase - fixed order of initializing objects defined in augments - process 'must' xpaths for state objects - ndtcli - fixed a problem with file redirection when command line contained xpath expression with a '>' in it. ver 1.6 - Sep 8, 2020 - v 1.52 code generator - Bug fix for the initial value of the bit type. Should be a label. - In notifications, 64 bit and empty type objects properly handled - mib2xml v1.3 - includes the following changes from the source/binary SDK 1.11.0 - restconf - add (plain) PATCH - add JSON input processing - update restconf-submit-test.html - add CLI unload, load & start processing for access agents. - changed layout of data template tree in Broker (to support leafref-s) - added load/unload access agent - added InitFromStartup (so datadll & access agent can be initailized after dynamic 'load') - added NoData class & object to xxx_Impl classes that did not have Data class, required for locking - updated ndt-mgmt.yang implementation: get-data-dlls, datadll load/unload get-access-agents, accessagent load/unload - updated DbgLog::DumpTemplates - print 'augments' - added 'warm-start' trap to SNMP access agent, sent after SNMP AA is dynamically loaded after startup - updated NDCompareTrees, added flag to indicate list node that has child(ren) modified ver 1.5 - July 8, 2020 - updated code generator to v 1.51 includes: - Put the basic structure in place for code separation of generated code from client’s proprietary code - Code put in for ‘Actions’ keyword - Bug fix for leaf-list and list template code generation when config attribute is false - Bug fix for code generated for a table index. Issue seen when the index name was a subset of the table name. - includes the following changes from the source/binary SDK 1.10.0 - add multi-threaded request servicing to name changed (ndtaanc) netconf access agent. - add filter type="path" to get/get-config, used in cli and ncclient - add print name of 'unknown' namespace when datastore load fails. - ietfInterfaces, map Description to Alias - update NDCompareTrees() for CmdDiff and CompareConfig - change default UDP transport wait period to be 1/10 second to reduce processor load. - add yang1.1. action - add command line option for logLevel - ndconfsvr - correct problem of creating multiple and stopping background ndconfsvr. - add restconf POST, PUT and DELETE on data resource. - add etag calculation for restconf HEAD operation - fix running datastore locking check in 'edit-config' - fix handling augment with 'when' - correct problems in XmlFilterHlp() - fixed tree compare - fixed problem data dll unloading - fixed problem DataStore::CommitAddModify - fixed problem MergeData: list and leaf-list - fixed problem in BuildInfo() (UDP tranport) if interface isn't IPv4 or 6 - improve algorithm for determining IPv4 address ver 1.4 - April 24, 2020 - _inc.h enhanced for nested import files in yang submodules - External include statements were missing in the case of tables with ‘uses’. Fixed. - PostCommit function was added - Improved initial values in statup-cfg-demo.xml - Cleanup. Removed xtest option and associated code. - remove ietf yang documents from schema directory, using them from pyang installation instead. - updated code generator plugin, to handle 'include' yang directive. - update ndtGen to use implicilty pyang ietf and iana modules. - minor updates to ndtGen. - changes so that there is only a single libietfInterfaces.so.0 required in the configuration. - redirect stdErr to log file on testagent and ndconfsvr. - remove internal script command from ncclient. - add output redirection to file from CLI access agent. - add single writer/multiple reader lock - update implementation SNMPv2-MIB.yang (ndtaasnmp) - fixed bug in ietf-interfaces (indexes for ...layer-if) ver 1.30 - Feb 10, 2020 - properly handle the case when the index is an enumeration ver 1.22 - Feb 6, 2020 - upgraded pyang to 2.1.1 - handling of external Augments - added reference to imported include files in the local include file - naming issues related to identitites in the generated C++ code - fixed handling of leafrefs and generated names for leafrefs in C++ code ver 1.20 - Oct 10, 2019 - Python 3 required to run pyang - upgraded pyang to 2.0 - changes to Python code to run with Python3 - regression testing with openconfig yang modules - improved handling of Augments ver 1.18 - Jan 18, 2019 - processsing of 'Augments' defined in yang modules, imported yang modules and 'included' yang modules - processing of included modules as defined in ietf-snmp.yang . Properly process groupings, typedefs, and augments defined in 'included' yang modules. - regression testing on in-house yang modules, ietf yang modules and more. ver 1.15 - Oct 11, 2018 - fixed code generated for nested groupings in _data.cpp - fixed code generated for nested groupings in _template.cpp ver 1.14 - Aug 15, 2018 - generates startup-demo.xml . It contains xml for startup values. - provide support for augmented nodes ver 1.10 - Nov 28, 2017 - initialization of lists and groupings in list initialize routines ver 1.08 - March 24, 2017 - regression testing with ietf yang modules, fixed bugs ver 1.01 - Aug 10, 2016 - implemented scheme to deal with duplicate names within the yang modules. - implemented generation of project files ver 0.98 - September 28, 2015 - INTERNAL - generation of syntax, template, interface c++ files for a given YANG module +-----------------+ | Limitations | +-----------------+ For Technical Support: Tel: (416) 737-0328 Fax: (416) 445-9101 Email: contact@ndt-inc.com