make_sil_bundle
- create a SIL bundle working directory
SYNOPSIS
make_sil_bundle bundle-name 1*(module-name) 0*(extra-parms)
Recommended Usage:
make_sil_bundle bundle-name 1*(module-name) --sil-get2 --sil-edit2
DESCRIPTION
make_sil_bundle is a script to create a server instrumentation library (SIL) root work directory, for a set of YANG modules, called a SIL bundle.
The bundle-name parameter must be present to specify the name of the SIL bundle. This name is used with the --bundle parameter in netconfd-pro. This name cannot be the same as any YANG module name in the SIL bundle.
One or more module-name parameters must be present to specify the names of the module to include in the SIL bundle. At least 1 module must be included.
Zero or more extra-parms additional parameters may be present to specify additional parameters to pass to the YANG compiler program. Almost any parameter accepted by the yangdump-sdk program can be added at the end as an extra parameter. The --module and --sil-bundle parameters cannot be added as extra params.
There are some CLI parameters that directly affect SIL code generation that can be used as extra parms. These parameters are:
--sil-edit2 If present, then the 2nd generation 'edit' functions will be generated for SIL or SIL-SA modes instead of first generation 'edit' functions. This parameter is now required. A deprecation warning will be generated if it is not used. The deprecated EDIT1 callbacks will still be generated.
--sil-get2 If present, then the 2nd generation 'get' functions will be generated for SIL or SIL-SA modes instead of first generation 'get' functions. This parameter is now required. A deprecation warning will be generated if it is not used. The deprecated GET1 callbacks will still be generated.
--sil-include=filename The name of an include file to inject into C files when the conversion format is equal to 'c' or 'yc'. An include statement will be generated for each instance of this parameter, in the order these parameters are given. Zero or more instances of this parameter are allowed.
The include statements will be generated after the system <include> statement and general YumaPro include statements, but before the YANG module specific include statements.
--sil-nmda If present, then the 2nd generation NMDA 'get' functions will be generated for SIL or SIL-SA modes, if code generation is being requested. Ignored otherwise. The GET2 callbacks will be generated with extra NMDA specific code for config=true data nodes. It is an error if sil-nmda is selected but sil-get2 is not selected.
SIL code generated will be split in 'YumaPro' files and 'User' files. A YumaPro SIL file or external definition begins with the prefix 'y_'. A User SIL file or external definition begins with the prefix 'u_'.
All YANG modules will be compiled together before generating any SIL code in order to properly generate SIL code for augment statements that add data to another YANG module.
The SIL callback functions for rpc and notification are combined into the SIL C file for the module that defines the rpc-stmt or notification-stmt.
The SIL callback functions for data nodes are distributed so the SIL C file for the module that defines the rpc-stmt or notification-stmt only has its own SIL callbacks and the SIL C file(s) that augment the main module only have their own SIL callbacks for data nodes. This allows new augmenting data nodes to be added to a SIL bundle by re-running this script and manually adding the new files to the source code.
There will be C and H files generated for the bundle itself. They are only used to call the init and cleanup functions for the YANG modules in the SIL bundle. When adding a new module to the bundle, these files need to be updated as well.
The following directories and files would be created if the command 'make_sil_bundle bundle1 test1 test2' was called from the current directory.
./test/ -+ | + bin/ | + lib/ | + Makefile | + output/html (*** doxygen generates this directory ***) | + src/ -+ | + Makefile | + y_bundle1.c | + y_bundle1.h | + y_test1.h | + y_test1.c | + y_test2.h | + y_test2.c | + u_test1.h | + u_test1.c (*** Developer edits this file ***) | + u_test2.h | + u_test2.c (*** Developer edits this file ***)
The doxygen program should be installed, so the HTML documentation can be used.
The 'make doc' command in the root directory will run doxygen and generate the output/html directory contents.
The 'make opendoc' command will launch the default browser to view the doxygen documentation in the output/html directory. It must be run after the 'make doc' command.
The YumaPro files never need to be edited. All the code that needs device instrumentation is contained in the User SIL C files.
The 'make' command in the root or 'src' directory will attempt to compile the C files and produce a library called root/lib/lib<bundle-name>.so. (e.g. /work/test/lib/libtest_sa.so). Note the extra '_sa' that is added in the library name for 'sub-agent'.
The 'make install' command in the root or 'src' directory will attempt to install the library file for the bundle in the YumaPro library directory (e.g., /usr/lib/yumapro).
USAGE
This script must be called from the parent directory where the SIL bundle root work directory should be created. The 'bundle-name' parameter will be used for the name of the directory created. The 'module-name' parameters must match YANG module names found in the module search path by yangdump-sdk.
SEE ALSO
make_sil_dir_pro, make_sil_sa_dir, make_sil_sa_bundle