.TH SNMP_CONFIG 5 "5 May 2005" VVERSIONINFO "Net-SNMP"
.SH NAME
snmp_config - handling of Net-SNMP configuration files
.SH DESCRIPTION
The Net-SNMP package uses various configuration files to configure its 
applications.  This manual page merely describes the overall nature of 
them, so that the other manual pages don't have to.
.SH "DIRECTORIES SEARCHED"
First off, there are numerous places that configuration files can be
found and read from.  By default, the applications look for
configuration files in the following 4 directories, in order:
SYSCONFDIR/snmp,
DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp.  In each of these
directories, it looks for files snmp.conf, snmpd.conf and/or
snmptrapd.conf, as well as snmp.local.conf, snmpd.local.conf
and/or snmptrapd.local.conf. *.local.conf are always
read last. In this manner, there are
8 default places a configuration file can exist for any given
configuration file type.
.PP
Additionally, the above default search path can be overridden by
setting the environment variable SNMPCONFPATH to a colon-separated
list of directories to search for.  The path for the persistent
data should be included when running applications that use
persistent storage, such as snmpd.
.PP
Applications will read persistent configuration files 
in the following order of preference:
.RS
.PP
file in 
.B SNMP_PERSISTENT_FILE
environment variable
.br
directories in 
.B SNMPCONFPATH
environment variable
.br
directory defined by 
.B
persistentDir 
snmp.conf variable
.br
directory in 
.B
SNMP_PERSISTENT_DIR 
environment variable
.br
default 
.B
PERSISTENT_DIRECTORY 
directory
.RE
.PP
Finally, applications will write persistent configuration files 
in the following order of preference:
.RS
.PP
file in 
.B SNMP_PERSISTENT_FILE
environment variable
.br
directory defined by 
.B
persistentDir 
snmp.conf variable
.br
directory in 
.B
SNMP_PERSISTENT_DIR 
environment variable
.br
default 
.B
PERSISTENT_DIRECTORY 
directory
.RE
.PP
Note:  When using SNMP_PERSISTENT_FILE, the filename should match the 
application name.  For example, /var/net-snmp/snmpd.conf.
.SH "CONFIGURATION FILE TYPES"
Each application may use multiple configuration files, which will
configure various different aspects of the application.  For instance, 
the SNMP agent
.RB ( snmpd )
knows how to understand configuration
directives in both the snmpd.conf and the snmp.conf files.  In fact,
most applications understand how to read the contents of the snmp.conf 
files.  Note, however, that configuration directives understood in one 
file may not be understood in another file.  For further information,
read the associated manual page with each configuration file type.
Also, most of the applications support a 
.B -H
switch on the command line that will list the configuration files it
will look for and the directives in each one that it understands.
.PP
The snmp.conf configuration file is intended to be a application suite 
wide configuration file that supports directives that are useful for
controlling the fundamental nature of all of the SNMP applications,
such as how they all manipulate and parse the textual SNMP MIB files.
.SH "SWITCHING CONFIGURATION TYPES IN MID-FILE"
It's possible to switch in mid-file the configuration type that the
parser is supposed to be reading.  Since that sentence doesn't make
much sense, lets give you an example: say that you wanted to turn on
packet dumping output for the agent by default, but you didn't want to
do that for the rest of the applications (ie, snmpget, snmpwalk, ...).
Normally to enable packet dumping in the configuration file
you'd need to put a line like:
.PP
.RS
dumpPacket true
.RE
.PP
into the snmp.conf file.  But, this would turn it on for all of the
applications.  So, instead, you can put the same line in the
snmpd.conf file so that it only applies to the snmpd daemon.  However,
you need to tell the parser to expect this line.  You do this by
putting a special type specification token inside a [] set.  In other
words, inside your snmpd.conf file you could put the above snmp.conf
directive by adding a line like so:
.PP
.RS
[snmp] dumpPacket true
.RE
.PP
This tells the parser to parse the above line as if it were inside a
snmp.conf file instead of an snmpd.conf file.  If you want to parse a
bunch of lines rather than just one then you can make the context
switch apply to the remainder of the file or until the next context
switch directive by putting the special token on a line by itself:
.PP
.RS
.nf
# make this file handle snmp.conf tokens:
[snmp]
dumpPacket true
logTimestamp true
# return to our original snmpd.conf tokens:
[snmpd]
rocommunity mypublic
.fi
.RE
.PP
The same approach can be used to set configuration directives for a
particular client application (or group of applications).  For example,
any program that uses the 'snmp_parse_args()' call to handle command-line
arguments (including the standard command-line tools shipped as part of the
Net-SNMP distributions) will automatically read the config file 'snmpapp.conf'.
To set library-level settings for these applications (but not other
more-specific tools), use configuration such as the following:
.PP
.RS
[snmp] defCommunity myCommunity
.RE
.PP
for a single directive, or
.PP
.RS
.nf
# make this file handle snmp.conf tokens:
[snmp]
defCommunity myCommunity
defVersion   2c
# return to our original snmpapp.conf tokens:
[snmpapp]
.fi
.RE
.PP
for multiple settings.
Similarly for any other application token (as passed to init_snmp()).
.SH COMMENTS
.PP
Any lines beginning with the character '#' in the configuration files
are treated as a comment and are not parsed.
.SH "API INTERFACE"
.PP
Information about writing C code that makes use of this system in
either the agent's MIB modules or in applications can be found in the
.I read_config(3)
manual page.
.SH "SEE ALSO"
snmpconf(1),
read_config(3),
snmp.conf(5),
snmpd.conf(5)
.\" Local Variables:
.\"  mode: nroff
.\" End:
