netconfd(1)
β¨ netconfd β¨ π
okay bestie, buckle up. you're looking at netconfd(1) β the manual page for netconfd version 2.14. it's giving "serious server energy" and honestly? it ate. let's go. π«Ά
πΈ NAME πΈ
netconfd β a YANG-based NETCONF-over-SSH server. that's the whole personality. it does NETCONF, it rides over SSH, it's YANG-based. iconic behavior only. π
π SYNOPSIS π
netconfd [parameter=value...]
netconfd --help [brief | normal | full]
netconfd --version
π¦ DESCRIPTION π¦
so netconfd is a YANG-based NETCONF server, and the way you use it is with an SSH server β like OpenSSH, for example. they're a duo. a collab. π€
this version of netconfd supports the YANG data modeling language as defined in RFC 6020. yes, an actual RFC. we're being official today. π
π USAGE π
parameters can go in any order you want, bestie, and they look like this:
[start] name [separator [value]]
where:
- start ==
0,1, or2dashes (foo,-foo,--foo) - name == parameter name
- Parameter name completion will be attempted if a partial name is entered.
- separator == whitespace or equals sign (
foo=bar,foo bar) - value == string value for the parameter.
- Strings with whitespace need to be double quoted (
--foo="some string")
- Strings with whitespace need to be double quoted (
some examples of valid command line parameters, because seeing it hits different:
foo=3
-foo=3
--foo=3
foo 3
foo=fred
--foo "fred flintstone"
and the lil cherry on top: partial parameter names can be entered if they are unique. type less, get more. we love efficiency. β¨
π OPTIONS π
okay this is the big one. every single option, no skips, no cuts. let's get into it. π
--access-control=enumβ controls how theietf-netconf-acmaccess control model will be enforced while the server is running. pick your fighter:enforcing: All configured access control rules will be enforced.permissive: All configured access control rules will be enforced for write and execute requests. All read requests will be allowed, unless the requested object contains thenacm:very-secureextension. In that case, all configured access control rules will be enforced.disabled: All read, write, and execute requests will be allowed, unless the object contains thenacm:secureornacm:very-secureextension. If thenacm:secureextension is in effect, then all configured access control rules will be enforced for write and execute requests. If thenacm:very-secureextension is in effect, then all configured access control rules will be enforced for all requests.
bestie. use this mode with caution. fr fr.
off: All access control enforcement is disabled.
use this mode with extreme caution. i am not joking around. π
--audit-log=filespecβ the filespec for the server audit log file, which gets used in addition to the normal log file or STDOUT. two logs, two vibes.--audit-log-appendβ if it's present, the audit log gets appended, not over-written. if it's not present, the audit log gets over-written. only meaningful if theaudit-logparameter is also present. they're a package deal. π«Ά--config=filespecβ the name of the configuration file to use. any parameter except this one can be set in the config file. and heads up: the default config file/etc/yuma/netconfd.confwill not be checked if this parameter is present. she's exclusive. π--datapath=listβ internal file search path for configuration data files. this overrides theYUMA_DATAPATHenvironment variable. also, this parameter affects the search for the startup configuration file (default:startup-cfg.xml).--default-style=enumβ picks the type of filtering behavior the server will advertise as the'basic'behavior in the'with-defaults'capability. the server uses this default handling behavior if the'with-defaults'parameter is not explicitly set.
also, when saving a configuration to NV-storage, this value is what gets used for filtering defaults out of the saved configuration. multi-tasking queen. π
report-all: report all valuestrim: remove leafs containing the YANG default valueexplicit: report only the nodes that have been created by the client or the server. This is the default value.
--delete-empty-npcontainers=booleanβ selects whether the server keeps or deletes empty non-presence containers in the running and startup configurations. set totrueto delete these containers, andfalseto keep them. default:false.
π¨ this parameter is deprecated! it is ignored by the server! it's giving ghost of options past. π
--deviation=stringβ this parameter identifies a YANG module that should only be checked for deviation statements for external modules. those get collected and applied to the real module(s) being processed.
deviations are applied as patches to the target module. since they are not identified in the target module at all (ala imports), they have to be specified explicitly, so they will be correctly processed. zero or more instances of this parameter are allowed. stack 'em. π§
--eventlog-size=numberβ the maximum number of notification events that will be saved in the notification replay buffer. the oldest entries get deleted first (first in, first out, classic). the default value is1000.--feature-disable=module:featureβ identifies a feature which should be considered disabled. zero or more entries are allowed.--feature-enable-default=booleanβ iftrue(which is the default), then features will be enabled by default. iffalse, then features will be disabled by default. the toggle of toggles.--feature-enable=module:featureβ identifies a feature which should be considered enabled. zero or more entries are allowed. twin of--feature-disable, but make it positive. β¨--hello-timeout=numberβ the number of seconds that a session may exist before the hello PDU is received. a session gets dropped if no hello PDU shows up before this number of seconds elapses. no hello, no entry. π€
if this parameter is set to zero, then the server will wait forever for a hello message, and will not drop any sessions stuck in 'hello-wait' state.
setting this parameter to zero may permit denial of service attacks, since only a limited number of concurrent sessions are supported by the server. bestie, be careful. π
(range 0 | 10 .. 3600). the default value is 600 seconds (10 minutes).
--helpβ print this help text and exit. the help-mode choice (--brief,--normal, or--full) may also be present to control the amount of help text printed. lil menu of menus. π--home=dirspecβ directory specification for the home directory to use instead ofHOME.--idle-timeout=numberβ the number of seconds that a session may remain idle without issuing any RPC requests. a session gets dropped if it is idle for an interval longer than this number of seconds.
plot twist though: sessions that have a notification subscription active are never dropped. subscription girlies stay winning. π
if this parameter is set to zero, then the server will never drop a session because it is idle. (range 0 | 10 .. 360000). the default value is 3600 seconds (1 hour).
--indent=numberβ number of spaces to indent (0..9) in formatted output. the default is2spaces. neat freak behavior, and honestly? valid.--log=filespecβ filespec for the log file to use instead of STDOUT. if this string begins with a'~'character, then a username is expected to follow or a directory separator character. if it begins with a'$'character, then an environment variable name is expected to follow. she reads your shortcuts. π₯--log-appendβ if present, the log gets appended, not over-written. if not, the log gets over-written. only meaningful if the log parameter is also present.--log-level=enumβ sets the debug logging level for the program. turn the dial up or down.--max-burst=numberβ the maximum number of notifications that should be sent to one session, within a one second time interval. the value0means the server should not limit notification bursts at all. the default value is10. pace yourself bestie, it's a marathon not a sprint. π¦--modpath=listβ directory search path for YANG and YIN files. this overrides theYUMA_MODPATHenvironment variable.--module=stringβ YANG or YIN source module name to load at startup. the server will attempt to load the specified module and its corresponding server instrumentation library (SIL).
if this string represents a filespec, ending with the .yang or .yin extension, then only that file location will be checked.
if this string represents a module name, then the module search path will be checked for a file the .yang or .yin extension.
if this string begins with a '~' character, then a username is expected to follow or a directory separator character. if it begins with a '$' character, then an environment variable name is expected to follow.
~/some/path ==> <my-home-dir>/some/path
~fred/some/path ==> <fred-home-dir>/some/path
$workdir/some/path ==> <workdir-env-var>/some/path
look at those little arrows doing their thing. obsessed. β¨
--ncxserver-sockname=pathβ overrides the default/tmp/ncxserver.sockUNIX socket name thatnetconfdlistens on for incoming connections. you have to add a corresponding entry to/etc/ssh/sshd_config, e.g.:
...
Port 1830
Subsystem netconf
...
--port=numberβ specifies the TCP ports that the server will accept connections from. these ports must also be configured in the/etc/ssh/sshd_configfile for the SSH master server to accept the connection and invoke the netconf subsystem.
up to 4 port numbers can be configured.
if any ports are configured, then only those values will be accepted by the server.
if no ports are configured, then the server will accept connections on the netconf-ssh port (tcp/830).
--protocols=bitsβ specifies which NETCONF protocol versions the server will attempt to use. the empty set is not allowed (empty set, you are not invited π). the values'netconf1.0'and'netconf1.1'are supported. the default is to enable both NETCONF protocol versions. both, because why choose. π«Ά--runpath=pathlistβ internal file search path for executable modules. this overrides theYUMA_RUNPATHenvironment variable.--running-error=enumβ if'stop', then errors in the running configuration will be treated as fatal errors. if'continue', the server will attempt to continue if any validataion errors are found in the running configuration at startup. the default is'stop'.
and bestie... that's genuinely not even the whole list. we are so not done here. keep scrolling, part 2 is coming and it's gonna be just as good. ππ
--startup=filespecβ bestie, this is where you point at the full or relative filespec of the startup config file you wanna use. If you pass it, it overrides the default startup config file name'startup-cfg.xml'. It'll also override theYUMA_DATAPATHenvironment variable and thedatapathCLI parameter β but only if the first character is the forward slash/, meaning absolute file path. π«Ά And heads up: if this parameter is present, then--no-startupand--factory-startupcannot be present. Fun fact: this is the default, which will causestartup-cfg.xmlto be used if not present. β¨--no-startupβ if present, do not load the startup config file, bestie. Use only factory default values instead. It does not affect thestartup.cfgfile, if present. If this parameter is present, then the--startupor--factory-startupparameter cannot be present. π--factory-startupβ force the system to use the factory configuration and delete the startup config file if it exists. Also forces the NV-storage startup to contain the factory default configuration. If this parameter is present, then the--no-startupand--startupparameters cannot be present. It's giving factory reset energy π--startup-error=enumβ if'stop', then any errors in the startup configuration get treated as fatal errors. If'continue', the server will attempt to continue if any errors are found in the database loaded from NV-storage to running at boot-time. The default is'stop'. No cap.--subdirs=booleanβ iffalse, the file search paths for modules, scripts, and data files will not include sub-directories if they exist in the specified path.
If true, then those file search paths will include sub-directories, if present. Any directory name beginning with a dot (.) character, or named CVS, will be ignored. This is the default mode. π
--superuser=stringβ the user name to use as the superuser account. Any session associated with this user name will bypass all access control enforcement. Seeietf-netconf-acm.yangfor more details. There is no default value. π--system-sorted=booleanβ tells you whether ordered-by system leaf-lists and lists will be kept in sorted order. The default istrue. β--target=enumβ specifies the database to use as the target ofedit-configoperations.
Enum values:
runningβ write to the running config and support the:writable-runningcapability.candidateβ write to the candidate config and support the:candidateand:confirmed-commitcapabilities.
--usexmlorderβ if present, then XML element order will be enforced. Otherwise, XML element order errors will not be generated if possible. Default is no enforcement of strict XML order. π¦--versionβ print the program version string and exit. That's it, that's the whole vibe. β¨--validate-config-onlyβ if present, netconfd acts as a command line YANG configuration validator. It loads the YANG schema modules, validates the startup configuration, and exits without opening a socket and listening for incoming sessions. Very demure, very mindful. π§--warn-idlen=numberβ controls whether identifier length warnings will be generated. The value zero disables all identifier length checking. If non-zero, then a warning gets generated if an identifier is defined which has a length greater than this amount. range:0 | 8 .. 1023. The default value is64. π--warn-linelen=numberβ controls whether line length warnings will be generated. The value zero disables all line length checking. If non-zero, then a warning gets generated if the line length is greater than this amount. Tab characters are counted as8spaces. range:0 | 40 .. 4095. The default value is72. πΈ--warn-off=numberβ controls whether the specified warning number will be generated and counted in the warning total for the module being parsed. range:400 .. 899. This parameter may be entered zero or more times. π--with-startup=booleanβ if set to'true', then the:startupcapability will be enabled. Otherwise, the:startupcapability will not be enabled. This capability makes the NV-save operation an explicit operation instead of an automatic save. The default value isfalse. π₯--with-url=booleanβ if set to'false', then the:urlcapability will be disabled. Otherwise, the:urlcapability will be enabled. This capability allows local files to be stored as backups on the server. The default value istrue. π--with-validate=booleanβ if set to'true', then the:validatecapability will be enabled. Otherwise, the:validatecapability will not be enabled. Heads up bestie, this capability requires extensive memory resources. The default value istrue. π--yuma-home=stringβ the directory for the yuma project root to use. If present, this directory location will override theYUMA_HOMEenvironment variable, if it is present. If a zero-length string is entered, then theYUMA_HOMEenvironment variable will be ignored. π
π₯ INPUT FILES
YANG modules can be loaded at startup with the --module command, or loaded at run-time with the load operation. Both slay, pick your fighter. π
π SEARCH PATH
When a module name is entered as input, or when a module or submodule name is specified in an import or include statement within the file, the following search algorithm is used to find the file:
- file is in the current directory
YUMA_MODPATHenvironment var (or set bymodpathparameter)$HOME/modulesdirectory$YUMA_HOME/modulesdirectory$YUMA_INSTALL/modulesdirectory OR default install module location,'/usr/share/yuma/modules'
By default, the entire directory tree for all locations (except step 1) will be searched, not just the specified directory. The subdirs parameter can be used to prevent sub-directories from being searched. π«Ά
Any directory name beginning with a dot character (.) will be skipped. Also, any directory named CVS will be skipped in directory searches. Not invited to the party, sorry not sorry. β¨
π ERROR LOGGING
By default, warnings and errors are sent to STDOUT. π
A log file can be specified instead with the log parameter.
Existing log files can be reused with the logappend parameter, otherwise log files are overwritten. π
The logging level can be controlled with the log-level parameter.
The default log level is 'info'. The log-levels are additive:
off: suppress all errors (not recommended!)
A program return code of '1' indicates some error.
error: print errors
warn: print warnings
info: print generally interesting trace info
debug: print general debugging trace info
debug2: print verbose debugging trace info
debug3: print very verbose debugging trace info
debug4: print maximum debugging trace info
Not recommended on off, bestie β suppressing all errors is a choice, and it's a scary one. π
π ENVIRONMENT
The following optional environment variables can be used to control module search behavior:
HOMEβ the user's home directory (e.g.,/home/andy) πYUMA_HOMEβ the root of the user's Yuma work directory (e.g.,/home/andy/swdev/netconf)YUMA_INSTALLβ the root of the directory thatyangdumpis installed on this system (default is,/usr/share/yuma)YUMA_DATAPATHβ colon-separated list of directories to search for data files. (e.g.:'./workdir/data-files:/home/andy/data') Thedatapathparameter will override this environment variable, if both are present.YUMA_MODPATHβ colon-separated list of directories to search for modules and submodules. (e.g.:'./workdir/modules:/home/andy/test-modules') Themodpathparameter will override this environment variable, if both are present.
βοΈ CONFIGURATION FILES
netconfd.confβ YANG config file. The default is:/etc/yuma/netconfd.conf
An ASCII configuration file format is supported to store command line parameters.
The config parameter is used to specify a specific config file, otherwise the default config file will be checked.
- A hash mark until EOLN is treated as a comment
- All text is case-sensitive
- Whitespace within a line is not significant
- Whitespace to end a line is significant. Unless the line starts a multi-line string, an escaped EOLN (backslash EOLN) is needed to enter a leaf on multiple lines.
- For parameters that define lists, the key components are listed just after the parameter name, without any name, e.g.,
interface eth0 {
# name = eth0 is not listed inside the braces
ifMtu 1500
ifName mySystem
}
A config file can contain any number of parameter sets for different programs.
Each program must have its own section, identified by its name:
# this is a comment
yangdump {
log-level debug
output "~/swdev/testfiles"
}
netconfd {
...
}
π FILES
The following data files must be present in the module search path in order for this program to function:
- YANG module library β default:
/usr/share/yuma/modules/
π©Ί DIAGNOSTICS
Internal diagnostics may generate the following type of message if any bugs are detected at runtime:
[E0]
filename.c:linenum error-number (error-msg)
π AUTHORS
Andy Bierman, <andy at netconfcentral dot org>
Vladimir Vassilev, <vladimir at lightside-instruments dot com>
π SEE ALSO
netconf-subsystem(1) pyang(1) yangcli(1)
And that's a wrap, bestie!! π This little legend lives in the Linux world, dated March 23, 2025, and it's the netconfd(1) manual page β go forth and configure responsibly, ily, mwah πβ¨
π¦ where this page comes from
- debian trixie: netconfd 2.14-1
- ubuntu questing: netconfd 2.14-1build1
- ubuntu resolute: netconfd 2.14-1build2
- ubuntu stonking: netconfd 2.14-1build3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms