confdc -c [-a | --annotate
YangAnnotationFile] [--deviation DeviationFile
] [-o FxsFile] [--verbose] [--fail-on-warnings] [-E | --error ErrorCode...] [-W | --warning
ErrorCode...] [-w | --no-warning
ErrorCode...] [--strict-yang] [--no-yang-source] [--use-description [always] ] [[--no-features] | [-F | --features Features
...]] [--ignore-unknown-features] [-p | --prefix
Prefix] [--subagent
MountPath] [--yangpath YangDir] [--export Agent
[-f FxsFileOrDir...]
...] -- YangFile
confdc --strip-yang-source FxsFile
confdc --list-errors
confdc -c [-o CclFile] ClispecFile
confdc -c [-o BinFile] [-I Dir] MibFile
confdc -c [-o BinFile] [--read-only] [--verbose] [-I Dir] [--include-file BinFile] [--fail-on-warnings] [--warn-on-type-errors ] [--warn-on-access-mismatch ] [--mib-annotation MibA] [-f FxsFileOrDir...] -- MibFile FxsFile...
confdc --emit-h HFile [--macro-prefix Prefix] [--include-type ] [--exclude-enums ] [--fail-on-warnings ] FxsFile
confdc --emit-h HFile [-a | --annotate
YangAnnotationFile] [--deviation DeviationFile
] [--strict-yang] [[--no-features] | [-F | --features Features
...]] [--ignore-unknown-features] [--yangpath YangDir] [--macro-prefix Prefix] [--include-type ] [--exclude-enums ] [--fail-on-warnings ] YangFile
confdc --emit-java JFile [--print-java-filename ] [--java-disable-prefix ] [--java-package Package] [--exclude-enums ] [--fail-on-warnings ] [-f FxsFileOrDir
...] FxsFile
confdc --emit-python PyFile [--print-python-filename ] [--no-init-py ] [--python-disable-prefix ] [--exclude-enums ] [--fail-on-warnings ] [-f FxsFileOrDir
...] FxsFile
confdc --emit-hrl HrlFile [--macro-prefix Prefix] [--include-type ] [--exclude-enums ] [--fail-on-warnings ] FxsFile
confdc --emit-hrl HrlFile [-a | --annotate
YangAnnotationFile] [--deviation DeviationFile
] [--strict-yang] [[--no-features] | [-F | --features Features
...]] [--ignore-unknown-features] [--yangpath YangDir] [--macro-prefix Prefix] [--include-type ] [--exclude-enums ] [--fail-on-warnings ] YangFile
confdc --emit-mib MibFile [ --join-names capitalize | hyphen ] [--oid OID] [--top Name] [--tagpath Path] [--import Module Name] [--module Module] [--generate-oids ] [--generate-yang-annotation] [--skip-symlinks] [--top Top] [--fail-on-warnings ] [--no-comments ] [--read-only ] -- FxsFile...
confdc --mib2yang-std [-p Prefix] [-o YangFile] -- MibFile
confdc --mib2yang-mods [--mib-annotation MibA] [--keep-readonly] [--namespace Uri] [--revision Date] [-o YangDeviationFile] -- MibFile
confdc --mib2yang [--mib-annotation MibA] [--emit-doc] [--snmp-name] [--read-only] [-u Uri] [-p Prefix] [-o YangFile] -- MibFile
confdc --snmpuser EngineID User AuthType PrivType PassPhrase
confdc --revision-merge [-o ResultFxs] [-v ] [-f FxsFileOrDir...] -- ListOfFxsFiles...
confdc --lax-revision-merge [-o ResultFxs] [-v ] [-f FxsFileOrDir...] -- ListOfFxsFiles...
confdc --get-info FxsFile
confdc --get-uri FxsFile
confdc --version
During startup the ConfD daemon loads .fxs files describing our configuration data models. A .fxs file is the result of a compiled YANG data model file. The daemon also loads clispec files describing customizations to the auto-generated CLI. The clispec files are described in clispec(5).
A yang file by convention uses .yang (or .yin) filename suffix. YANG files are directly transformed into .fxs files by confdc.
We can use any number of .fxs files when working with the ConfD daemon.
The --emit-h option is used to generate a
.h file from a .fxs or YANG (.yang/.yin) file. How to use the generated
.h files is described in the ConfD User Guide.
The --emit-java option is used to generate
a .java file from a .fxs file. The java file is used in
combination with the Java library for Java based applications.
The --emit-python option is used to generate
a .py file from a .fxs file. The python file is used in
combination with the Python library for Python based applications.
The --emit-hrl option is used to generate a
.hrl file from a .fxs or YANG (.yang/.yin) file. The .hrl file can
be used for Erlang based applications.
The --print-java-filename option is used to print
the resulting name of the would be generated .java file.
The --print-python-filename option is used to print
the resulting name of the would be generated .py file.
The --python-disable-prefix option is used to prevent
prepending the Yang module prefix to each symbol in the generated .py file.
The --emit-mib option is used to generate
an SNMP MIB from .fxs files.
The --snmpuser option is used to generate
localized keys for SNMP v3.
A clispec file by convention uses a .cli filename suffix. We use the confdc command to compile a clispec into a loadable format (with a .ccl suffix).
A mib file by convention uses a .mib filename suffix. The confdc command is used for compiling the mib with one or more fxs files (containing OID to YANG mappings) into a loadable format (with a .bin suffix). See the ConfD User Guide for more information about compiling the mib.
Take a look at the EXAMPLE section for a crash course.
-f, --fxsdep FxsFileOrDir....fxs files (or directories containing .fxs files) to be used to resolve cross namespace dependencies.
--yangpath YangModuleDir
YangModuleDir is a directory containing other YANG modules and submodules. This flag must be used when we import or include other YANG modules or submodules that reside in another directory.
-o, --output FilePut the resulting file in the location given by File.
-c, --compile FileCompile a YANG file (.yang/.yin) to a .fxs file or a clispec (.cli file) to a .ccl file, or a MIB (.mib file) to a .bin file
-a, --annotate AnnotationFileYANG users that are utilizing the tailf:annotate extension must use this flag to indicate the YANG annotation file(s).
This parameter can be given multiple times.
--deviation DeviationFileIndicates that deviations from the module in DeviationFile should be present in the fxs file.
This parameter can be given multiple times.
-Ffeatures, --feature features
Indicates that support for the YANG
features should be present in the
fxs file. features is a
string on the form
modulename:[feature(,feature)*]
This option is used to prune the data model by removing
all nodes that are defined with a "if-feature" that is
not listed as feature.
This option can be given multiple times.
If this option is not given, nothing is pruned, i.e., it works as if all features were explicitly listed.
If the module uses a feature defined in an imported YANG
module, it must be given as
modulename:feature.
--no-yang-sourceBy default, the YANG module and submodules source is included in the fxs file, so that a NETCONF or RESTCONF client can download the module from the server.
If this option is given, the YANG source is not included.
--no-featuresIndicates that no YANG features from the given module are supported.
--ignore-unknown-features
Instructs the compiler to not give an error if an unknown
feature is specified with --feature.
-p, --prefix PrefixConfD needs to have a unique prefix for each loaded YANG module, which is used e.g. in the CLI and in the APIs. By default the prefix defined in the YANG module is used, but this prefix is not required to be unique across modules. This option can be used to specify an alternate prefix in case of conflicts. The special value 'module-name' means that the module name will be used for this prefix.
--use-description [always]Normally, 'description' statements are ignored by confdc. Instead the 'tailf:info' statement is used as help and information text in the CLI and Web UI. When this option is specified, text in 'description' statements is used if no 'tailf:info' statement is present. If the option always is given, 'description' is used even if 'tailf:info' is present.
--export Agent ...Makes the namespace visible to Agent. Agent is
either "none", "all", "netconf", "snmp", "cli", "webui",
"rest" or a free-text string. This option overrides any
tailf:export statements in the module. The option
"all" makes it visible to all agents. Use
"none" to make it invisible to all agents.
--subagent MountPath
This option is used to compile a subagent's YANG modules for the master agent. It tells the master agent that this namespace is handled by a subagent. MountPath is an XPath expression (without instance selectors) where the namespace is mounted in the master agent's data hierarchy.
--fail-on-warningsMake compilation fail on warnings.
-W
ErrorCode
Treat ErrorCode as a warning,
even if --fail-on-warnings is given.
ErrorCode must be a warning
or a minor error.
Use --list-errors to get a listing of all
errors and warnings.
The following example treats all warnings except the warning for dependency mismatch as errors:
$ confdc -c --fail-on-warnings -W TAILF_DEPENDENCY_MISMATCH-w
ErrorCode
Do not report the warning ErrorCode,
even if --fail-on-warnings is given.
ErrorCode must be a warning.
Use --list-errors to get a listing of all
errors and warnings.
The following example ignores the warning TAILF_DEPENDENCY_MISMATCH:
$ confdc -c -w TAILF_DEPENDENCY_MISMATCH-E
ErrorCode
Treat the warning ErrorCode as
an error.
Use --list-errors to get a listing of all
errors and warnings.
The following example treats only the warning for unused import as an error:
$ confdc -c -E UNUSED_IMPORT--strict-yangForce strict YANG compliance. Currently this checks that the deref() function is not used in XPath expressions and leafrefs.
--mib2yang-std MibFileGenerate a YANG file from the MIB module (.mib file), in accordance with the IETF standard, RFC-6643.
If the MIB IMPORTs other MIBs, these MIBs must be
available (as .mib files) to the compiler when a YANG
module is generated. By default, all MIBs in the
current directory and all builtin MIBs are available.
Since the compiler uses the tool
smidump to perform the conversion to
YANG, the environment variable
SMIPATH can be set to a
colon-separated list of directories to search for MIB
files.
-p, --prefix PrefixSpecify a prefix to use in the generated YANG module.
An appendix to the RFC describes how the prefix is automatically generated, but such an automatically generated prefix is not always unique, and ConfD requires unique prefixes in all loaded modules.
--mib2yang-mods MibFileGenerate a combined YANG deviation/annotation file from the MIB module (.mib file), which can be used to compile the yang file generated by --mib2yang-std, to achieve a similar result as with the non-standard --mib2yang translation.
-p, --prefix PrefixSpecify a prefix to use in the generated YANG module.
An appendix to the RFC describes how the prefix is automatically generated, but such an automatically generated prefix is not always unique, and ConfD requires unique prefixes in all loaded modules.
--mib-annotation MibAProvide a MIB annotation file to control how to override the standard translation of specific MIB objects to YANG. See mib_annotations(5).
--revision DateGenerate a revision statement with the provided Date as value in the deviation/annotation file.
--namespace UriSpecify a uri to use as namespace in the generated deviation/annotation module.
--keep-readonlyDo not generate any deviations of the standard config (false) statements. Without this flag, config statements will be deviated to true on yang nodes corresponding to writable MIB objects.
--mib2yang MibFileGenerate a YANG file from the MIB module (.mib file).
If the MIB IMPORTs other MIBs, these MIBs must be
available (as .mib files) to the compiler when a YANG
module is generated. By default, all MIBs in the
current directory and all builtin MIBs are available.
Since the compiler uses the tool
smidump to perform the conversion to
YANG, the environment variable
SMIPATH can be set to a
colon-separated list of directories to search for MIB
files.
-u, --uri UriSpecify a uri to use as namespace in the generated YANG module.
-p, --prefix PrefixSpecify a prefix to use in the generated YANG module.
--mib-annotation MibAProvide a MIB annotation file to control how to translate specific MIB objects to YANG. See mib_annotations(5).
--snmp-nameGenerate the YANG statement "tailf:snmp-name" instead of "tailf:snmp-oid".
--read-onlyGenerate a YANG module where all nodes are "config false".
-c, --compile MibFileCompile a MIB module (.mib file) to a .bin file.
If the MIB IMPORTs other MIBs, these MIBs must be available (as compiled .bin files) to the compiler. By default, all compiled MIBs in the current directory and all builtin MIBs are available. Use the parameters --include-dir or --include-file to specify where the compiler can find the compiled MIBs.
--verbosePrint extra debug info during compilation.
--read-onlyCompile the MIB as read-only. All SET attempts over SNMP will be rejected.
-I, --include-dir DirAdd the directory Dir to the list of directories to be searched for IMPORTed MIBs (.bin files).
--include-file FileAdd File to the list of files of IMPORTed (compiled) MIB files. File must be a .bin file.
--fail-on-warningsMake compilation fail on warnings.
--warn-on-type-errorsWarn rather than give error on type checks performed by the MIB compiler.
--warn-on-access-mismatchGive a warning if an SNMP object has read only access to a config object.
--mib-annotation MibAProvide a MIB annotation file to fine-tune how specific MIB objects should behave in the SNMP agent. See mib_annotations(5).
--emit-h HFileGenerate a .h utility header file to be used when working with the ConfD C APIs.
When the header file is generated from a YANG (.yang/.yin) file, the YANG file is currently compiled to a temporary .fxs file as an intermediary step.
--macro-prefix Prefix
Without this option, all macro definitions in the
generated .h file are prepended with the argument of the
prefix statement in the YANG module. If this
option is used, the macro definitions are prepended with
Prefix instead.
--include-typeIf this option is used all macro definitions for enums in the generated .h file have the type name as part of their name.
--exclude-enumsIf this option is used, macro definitions for enums are omitted from the generated .h file. This can in some cases be useful to avoid conflicts between enum symbols, or between enums and other symbols.
--fail-on-warningsIf this option is used all warnings are treated as errors and confdc will fail its execution.
--emit-hrl HrlFileGenerate a .hrl utility header file to be used when working with the ConfD Erlang APIs.
When the header file is generated from a YANG (.yang/.yin) file, the YANG file is currently compiled to a temporary .fxs file as an intermediary step.
--macro-prefix Prefix
Without this option, all macro definitions in the
generated .hrl file are prepended with the argument of the
prefix statement in the YANG module. If this
option is used, the macro definitions are prepended with
Prefix instead.
--include-typeIf this option is used all macro definitions for enums in the generated .hrl file have the type name as part of their name.
--exclude-enumsIf this option is used, macro definitions for enums are omitted from the generated .hrl file. This can in some cases be useful to avoid conflicts between enum symbols, or between enums and other symbols.
--fail-on-warningsIf this option is used all warnings are treated as errors and confdc will fail its execution.
--emit-mib MibFile
Generates a MIB file for use with SNMP agents/managers. See the appropriate section in the SNMP agent chapter in the ConfD User Guide for more information.
--join-names capitalizeJoin element names without separator, but capitalizing, to get the MIB name. This is the default.
--join-names hyphenJoin element names with hyphens to get the MIB name.
--join-names force-capitalizeThe characters '.' and '_' can occur in YANG identifiers but not in SNMP identifiers; they are converted to hyphens, unless this option is given. In this case, such identifiers are capitalized (to lowerCamelCase).
--oid OID
Let OID be the top object's OID. If
the first component of the OID is a name not defined in
SNMPv2-SMI, the --import option is also
needed in order to produce a valid MIB module, to import
the name from the proper module. If this option is not
given, a tailf:snmp-oid statement must be
specified in the YANG header.
--tagpath PathGenerate the MIB only for a subtree of the module. The Path argument is an absolute schema node identifier, and it must refer to container nodes only.
--import Module Name Add an IMPORT statement which imports Name from the MIB Module.
--top NameLet Name be the name of the top object.
--module Name
Let Name be the module name. If
a tailf:snmp-mib-module-name statement is in
the YANG header, the two names must be equal.
--generate-oids
Translate all data nodes into MIB objects, and generate OIDs
for data nodes without tailf:snmp-oid statements.
--generate-yang-annotation
Generate a YANG annotation file containing the
tailf:snmp-oid,
tailf:snmp-mib-module-name and
tailf:snmp-row-status-column statements for the
nodes. Implies --skip-symlinks.
--skip-symlinksDo not generate MIB objects for data nodes modeled through symlinks.
--fail-on-warningsIf this option is used all warnings are treated as errors and confdc will fail its execution.
--no-commentsIf this option is used no additional comments will be generated in the MIB.
--read-onlyIf this option is used all objects in the MIB will be read only.
--prefix StringPrefix all MIB object names with String.
--snmpuser
EngineID
User
AuthType
PrivType
PassPhrase
Generates a user entry with localized keys for the specified engine identifier. The output is an usmUserEntry in XML format that can be used in an initiation file for the SNMP-USER-BASED-SM-MIB::usmUserTable. In short this command provides key generation for users in SNMP v3. This option takes five arguments: The EngineID is either a string or a colon separated hexlist, or a dot separated octet list. The User argument is a string specifying the user name. The AuthType argument is one of md5, sha, or none. The PrivType argument is one of des, aes, or none. The PassPhrase argument is a string.
--emit-java JFile
Generate a .java ConfNamespace file from a .fxs file to be used when working with the Java library. The file is useful, but not necessary when working with the NAVU library. JFile could either be a file or a directory. If JFile is a directory the resulting .java file will be created in that directory with a name based on the module name in the YANG module. If JFile is not a directory that file is created. Use --print-java-filename to get the resulting file name.
--print-java-filename
Only print the resulting java file name. Due to restrictions of identifiers in Java the name of the Class and thus the name of the file might get changed if non Java characters are used in the name of the file or in the name of the module. If this option is used no file is emitted the name of the file which would be created is just printed on stdout.
--java-package Package
If this option is used the generated java file will have the given package declaration at the top.
--exclude-enumsIf this option is used, definitions for enums are omitted from the generated java file. This can in some cases be useful to avoid conflicts between enum symbols, or between enums and other symbols.
--fail-on-warningsIf this option is used all warnings are treated as errors and confdc will fail its execution.
-f, --fxsdep FxsFileOrDir....fxs files (or directories containing .fxs files) to be used to resolve cross namespace dependencies.
--strip-yang-source
FxsFile
Removes included YANG source from the fxs file. This makes the file smaller, but it means that the YANG module and submodules cannot be downloaded from the server, unless they are present in the load path.
--get-info
FxsFile
Various info about the file is printed on standard output, including the names of the source files used to produce this file, which confdc version was used, and for fxs files, namespace URI, other namespaces the file depends on, namespace prefix, and mount point.
--get-uri FxsFile
Extract the namespace URI.
--versionReports the confdc version.
Assume we have the file system.yang:
module system {
namespace "http://example.com/ns/gargleblaster";
prefix "gb";
import ietf-inet-types {
prefix inet;
}
container servers {
list server {
key name;
leaf name {
type string;
}
leaf ip {
type inet:ip-address;
}
leaf port {
type inet:port-number;
}
}
}
}To compile this file we do:
$ confdc -c system.yang
If we intend to access data from this module from our C programs, it is meaningful to generate a .h file like this:
$ confdc -c --emit-h blaster.h system.fxs
The .h file contains #define
entries for the
different nodes in system.yang. C code that needs to
manipulate or read data from this module will typically need to include the
generated .h file.
If we intend to manipulate this data from our Java programs, we must typically also invoke:
$ confdc --emit-java blaster.java system.fxs
Finally we show how to compile a clispec into a loadable format:
$ confdc -c mycli.cli $ ls mycli.ccl myccl.ccl
ConfD supports YANG 1.1, as defined in draft-ietf-netmod-rfc6020bis-12, with the following exceptions:
Type empty in unions and in list keys
is not supported.
Type leafref in unions are not
validated, and treated as a string internally.
anydata is not supported.
The new scoping rules for submodules are not implemented. Specifically, a submodule must still include other submodules in order to access definitions defined there.
Inline notification statements are handled by the compiler, but not supported in the APIs.
The new XPath functions derived-from() and
derived-from-or-self() can only be
using with literal strings in the second argument.
Leafref paths without prefixes in top-level typedefs are handled as in YANG 1.