- (FAQ): Changes from Dave.


git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@954 06827809-a52a-0410-b366-d66718629ded
diff --git a/FAQ b/FAQ
index 3419fd3..83c6882 100644
--- a/FAQ
+++ b/FAQ
@@ -20,11 +20,13 @@
    How do I submit a patch or bug report?
    What's the difference between SNMPv1 and SNMPv2?
    What are all these different SNMPv2's anyway?
-   Which SNMPv2 is supported in this package?
+   Which versions of SNMP are supported in this package?
    Where can I find more information?
  AGENT
    What MIBs are supported?
    How do I add a MIB?
+   How do I add a MIB to the tools?
+   How do I add a MIB to the agent?
    How do I add functionality?
    What traps are sent by the agent?
    When I run the agent it runs and then quits without staying around. Why?
@@ -39,6 +41,8 @@
    Why can't I see values in the UCDavis 'extensible' tree?
    Why can't I see values in the <INSERT ENTERPRISE HERE> tree?
    I've done that, and I still can't see the values. Why not?
+   I've done that, and I'm *still* not getting anything back. Why not?
+   I've done that, but I'm *still* getting "sub-identifier not found:" Grrr!
    The agent is complaining about 'snmpd.conf'.  Where is this?
    What does "klread:  bad address" mean?
    What does "nlist err:  wombat not found" (or similar) mean?
@@ -66,7 +70,6 @@
 	* tools to request or set information from SNMP agents
 	* tools to generate and handle SNMP traps
 	* a version of the unix 'netstat' command using SNMP
-	* a Tk/perl interface to the UCD extensions
 
     This package is originally based on the Carnegie Mellon University
     SNMP implementation (version 2.1.2.1)
@@ -103,22 +106,22 @@
 What operating systems does it run on?
 -------------------------------------
 
-	* HP-UX 9.05, 9.03, 9.01 on HPPA 1.1 systems
+	* HP-UX 9.07, 9.05, 9.03, 9.01 on HPPA 1.1 systems
 	* HP-UX 10.10, 10.01 on HPPA 1.1 systems
 	* Ultrix 4.4, 4.3, 4.2 on DEC MIPS systems
-	* Solaris 2.5, 2.4, 2.3 on Sun SPARC systems
+	* Solaris 2.5.1, 2.5, 2.4, 2.3 on Sun SPARC systems
 	* Solaris 2.5 on x86 systems
-	* SunOS 4.1.3, 4.1.3, 4.1.2 on Sun SPARC systems
+	* SunOS 4.1.4, 4.1.3, 4.1.3, 4.1.2 on Sun SPARC systems
 	* OSF 3.2, 4.0 on DEC Alpha systems
 	* NetBSD 1.2, 1.1, 1.0 on all? systems
 	* FreeBSD 2.x on all? systems
 	* BSDi 2.1 on all? systems
+	* Linux 2.*, 1.3 on all? systems
         * AIX 4.1.5 on all? systems
 
   The applications (though not necessarily the agent) run on the
   following systems:
 
-        * Linux - all? versions?
         * Irix 6.2
 
 
@@ -130,10 +133,10 @@
 	let us know so that we can update the list above.
 	If it doesn't work, let us know and we'll try to help.
   If the agent almost compiles, but certain files in the
-	agents/mibgroup directory fail, you can try re-running
-	confugure with the flag
+	agents/mibgroup directory fail, you can try omitting those
+	modules by re-running configure with the flag
 		--with-out-mib-modules="list"
-	to omit particular modules. You'll then need to re-compile.
+	You'll then need to re-compile.
   Either way, try it and let us know how you get on (see below for how).
 	
 
@@ -168,24 +171,25 @@
 -------------------------------------
 
    There is a script that you can use to submit a bug report.
-	This allow you to describe the problem you're having, and
+   This allow you to describe the problem you're having, and
 	includes various pieces of information about your system
 	that are useful in trying to track down the problem.
 
-	Alternatively, you can send a message to
+   Alternatively, you can send a message to
 		'ucd-snmp-coders@ece.ucdavis.edu'
 	containing a description of the problem, and as much other
 	relevant details as you can. Useful information includes the
 	version of the package that you've been working with, the output
-	of the command 'uname -a', the precise command that you've used,
-	and a copy of the output it produces.
+	of the command 'uname -a', the precise command that triggers the
+	problem and a copy of the output it produces.
 
-	We can't promise to be able to solve the problem, but we'll
+   We can't promise to be able to solve the problem, but we'll
 	certainly try and help.
 
 
    If you're trying to port the package to a new system, the output
-	of the command 'make -k' is a good start.
+	of the command 'make -k' is a good starting indicator of where
+	the bulk of the work is likely to be needed.
 
    If you're reporting success on a new system, please let us know
    both details of the hardware you're using, and what versions of
@@ -201,12 +205,13 @@
 
 
   A full description is probably beyond the scope of this FAQ.
-  Very briefly, practical experience showed up various problems and
-  deficiencies with the original protocol and framework (described in
-  RFCs 1155-1157 and known now as SNMPv1).
+  Very briefly, the original protocol and framework was described
+  in RFCs 1155-1157, and is now known as SNMPv1.
 
-  The revised framework that attempted to address these was described
-  in RFCs 1441-1452, and is known as "SNMPv2 classic".
+    Practical experience with this showed up various problems and
+  deficiencies wih this, and a revised framework was developed to
+  try and address these.  This was described in RFCs 1441-1452, and
+  is known as "SNMPv2 classic".
   The changes proposed include:
 
 	* new ways of defining information (MIB structure)
@@ -215,15 +220,15 @@
 	* new mechanisms for administration and security
 	* mechanisms for remote configuration
 
-  Unfortunately, while much of these were generally accepted, there
-  is still some disagreement in these last two areas, security/admin
-  and remote configuration.  This has resulted in a number of
-  variants and alternative proposals:
+  Unfortunately, while many of these were generally accepted, there
+  was still some disagreement in these last two areas, security/admin
+  and remote configuration.  This resulted in a number of variants and
+  alternative proposals:
 
 	SNMPv2c		Contains the new protocol and MIB structure elements,
 			using the existing SNMPv1 administration structure.
 			This is the agreed SNMPv2 standard (described in
-			RFCs 1901-1908), superseding SNMPv2 classic, and
+			RFCs 1901-1908), superseding SNMPv2 classic, and is
 			known as "Community-based SNMPv2" or simply "SNMPv2".
 
 
@@ -232,38 +237,50 @@
 			} These are both super-sets of SNMPv2c
 
 			
-	SNMP-NG		The most recent attempt to reach agreement between
+	SNMP-NG		A recent attempt to reach agreement between
 			the proponents of usec and v2star.
 
-	SNMPv3		The formal successor to SNMP-NG, aiming to produce
-			Proposed Standards for the next generation of core
-			SNMP functions over the next twelve months.
+	SNMPv3		The formal successor to SNMP-NG, currently being
+			active developed, and aiming to produce Proposed
+			Standards for the next generation of core SNMP
+			functions in the very near future.
 
 
-Which SNMPv2 is supported in this package?
------------------------------------------
+Which versions of SNMP are supported in this package?
+----------------------------------------------------
 
-  This package currently supports SNMPv2 classic (i.e. RFCs 1441-1452),
-  as that was the version current at the time the package was originally
-  developed.
-  This is now regarded as "historic", and it is hoped to move to
-  SNMPv2c as soon as possible.
-  When an agreed standard for SNMPv3 finally emerges,
-  we would hope to include support for that.
+  This package currently supports the original SNMPv1, SNMPv2 classic
+  (i.e. RFCs 1441-1452, and referred to as "SNMPv2 historic)), and
+  Community-based SNMPv2 (i.e. RFCs 1901-1908).
+    The agent will respond to requests using any of these protocols,
+  and all the tools take a command-line option to determine which
+  version to use.
+
+    The group is not currently tracking the SNMPv3 development (as far
+  as I know).  When these standards emerge, it is likely that we will
+  seek to implement them as soon as possible.
 
 
 Where can I find more information?
 ---------------------------------
 
-  A couple of sites with network management information on the WWW are
+  There are a number of sites with network management information on
+  the World Wide Web. Two of the most useful are
 
       http://netman.cit.buffalo.edu/index.html
       http://wwwsnmp.cs.utwente.nl/
 
-  The newsgroup 'comp.protocols.snmp' has an FAQ (split into two parts)
-  which discusses more general issues related to SNMP, including books,
-  software, other sites, how to get an enterprise number, etc, etc.
-  These are available from
+  There are two Usenet newsgroups which are relevant.
+	'comp.dcom.net-management'
+		which discusses general issues relating to network management
+	'comp.protocols.snmp'
+		which is specifically concerned with use of SNMP in particular
+
+  (though there is a large overlap between these two groups).
+  The SNMP group also has an FAQ (split into two parts) which discusses more
+  general issues related to SNMP, including books, software, other sites,
+  how to get an enterprise number, etc, etc.
+  This is available from
 
       ftp://rtfm.mit.edu/pub/usenet/comp.protocols.snmp/
 
@@ -285,17 +302,38 @@
 		 shell commands, error handling)
 	- SNMPv2 Party MIB (RFC 1447 - now 'historic')
 	- SNMPv2 Manager-to-Manager MIB (RFC 1451 - now 'historic')
+	- SMUX implementation (RFC 1227) for communicating with 'gated'
+		(plus routing protocols BGP, OPSF & RIP2 - RFCs 1657, 1724 & 1850)
+	- Host Resources (RFC 1514) skeleton implementation
+
 
 
 How do I add a MIB?
 ------------------
 
-  The tools look in a predefined directory (PREFIX/lib/snmp/mibs) and
-  regard any file held there as defining a MIB module or modules to be
-  included.  If the agent to be queried supports a particular MIB module,
-  then by placing the relevant file in this directory, all the tools
-  will be able to take advantage of this new information.  (But see
-  the first question under PROBLEMS below).
+  This is actually two separate questions, depending on whether you
+  are referring to the tools, or the agent (or both).
+    See the next two questions.
+
+
+
+How do I add a MIB to the tools?
+-------------------------------
+
+  The tools only really use the MIB files for translating between
+  numeric and textual forms for queries and responses.  They will
+  operate quite happily without any MIB files at all, as long as
+  you are prepared to work with numeric OIDs throughout.
+
+  The tools look in a predefined directory (usually PREFIX/lib/snmp/mibs)
+  and regard any file held there as defining a MIB module or modules.
+  Adding translation ability for a new MIB moule is simply a
+  matter of placing a file defining the MIB in this directory, and
+  defining a suitable environment to tell the tools about it.
+    (See the first question under 'PROBLEMS' for more details).
+
+  The tools can then be used to communicate with any agent that
+  implements the relevant MIB modules.
 
   The UCD agent, however, does not use these MIB text files at all, and
   will work quite happily without them.  (Actually it needs to find the
@@ -305,47 +343,68 @@
   the implementation.  The MIB text files are only used to translate
   these responses into more meaningful terms.
 
-  Adding a file to the MIB directory does not automatically extend the
-  functionality of the agent to include this MIB.  (Would that life
-  were so simple).  See the next question for how to do this.
 
 
+How do I add a MIB to the agent?
+-------------------------------
 How do I add functionality?
 --------------------------
 
-  Some extra functionality is already provided - in particular
-  the ability to monitor a station for the presence, absence or
-  excess numbers of particular processes, or excessive use of disk
-  space or CPU.
-    More general functionality can be added by providing a command
-  (such as a shell script) to be run and report the necessary
-  information, or perform the required actions. Detailed information
-  and examples are provided in the snmpd(1) and snmpd.conf(5) manual
-  pages, or the EXAMPLE.conf file.  Alternatively, the agent itself
-  can be extended to support additional MIB groups (see 'Technical'
-  below).
+  Unfortunately, adding a file to the MIB directory does not automatically
+  extend the functionality of the agent to include this MIB.  (Would that
+  life were so simple).  In fact, the agent makes little or no use of
+  these files, and will work quite happily without them.
+  All the information about the syntax and scope of the variables supported
+  is hardwired into the iplementation of the agent.
+
+  There are three ways to add funcionality for a new MIB to the agent.
+
+  Firstly, it is possible that the agent distribution already includes
+  the desired functionality, but this has simply not been configured in
+  to the running version.  This is done using the configure option
+		--with-mib-modules="list"
+  then recompiling the agent.
+  Note that some functionality concerned with monitoring and managing
+  unix hosts is included in the UCD extension modules, which are located
+  within the 'private' branch of the MIB tree.  See the third question
+  under PROBLEMS for more details of how to access these.
+
+  Secondly, it is possible for the agent to run commands or shell scripts
+  in response to queries.  These can optain and report the necessary
+  information, or perform actions as required.
+  Detailed information and examples are provided in the snmpd(1) and
+  snmpd.conf(5) manual pages, and the EXAMPLE.conf file.
+
+  Thirdly, the agent itself can be extended to support additional MIB
+  groups, by writing the necessary C code.  This is covered further in
+  the 'TECHNICAL' section below.
 
     Note that there is effectively no difference between 'pass-through'
   MIB support, and modules implemented within the agent itself. Tools
   querying the agent will see a single MIB structure.
  
 
+
 What traps are sent by the agent?
 --------------------------------
 
-  The agent will send a 'coldStart(0)' trap when it first starts up.
-  The destination to send the trap to, and the community name to use,
-  are set by putting entries in the snmpd.conf file for 'trapsink'
-  and 'trapcommunity' - note that both are required.
+  The agent can be configured to send a 'coldStart(0)' trap when it first
+  starts up.  The destination to send the trap to, and the community name
+  to use, are set in the snmpd.conf file
+    ('trapsink' and 'trapcommunity' respectively - note both are required)
+
     The agent can also be configured to send 'authenticationFailure(4)'
   traps when it receives SNMPv1 requests using a community name that is
-  not recognised.  This is done with the snmpd.conf entry 'authtrapsenable 1'.
+  not recognised.
+    This is done with the snmpd.conf entry 'authtrapsenable 1'.
     
 
 
 When I run the agent it runs and then quits without staying around. Why?
 -----------------------------------------------------------------------
 
+  The first question is, are you certain that this is what is happening?
+
   The normal operation of the agent is to 'fork' itself into the
   background, detaching itself so that it will continue running even
   when you log out, and freeing the command line for subsequent use.
@@ -356,6 +415,10 @@
   agent, you can start it with the '-f' flag.  This suppresses the
   fork, and the agent will run as a 'normal' command.
 
+  On the other hand, if 'ps' shows that the agent is not running, then
+  this is an error, and probably show that something went wrong in
+  starting the agent up.  See under 'PROBLEMS' for more advice.  
+
 
 
 TECHNICAL
@@ -377,15 +440,19 @@
   Contact the list 'ucd-snmp-coders@ece.ucdavis.edu' for further advice.
 
   It is hoped to implement some form of proxy mechanism (such as the
-  agentx protocols) once the specification for these have settled.
+  agentx protocols) once the specification for these have settled, and
+  someone gets around to writing the necessary code.
 
 
 What ASN.1 parser is used?
 -------------------------
 
   The parser used by both the agent and client programs is coded by hand.
-  The source code can be found in the snmplib directory, and the parser
-  is usually bundled into the library 'libsnmp.a'
+  This parser has recently been re-vamped to allow control of which of 
+  the available MIBs should be included, and to handle duplicate object
+  subidentifiers.
+    The source code can be found in the snmplib directory (in 'parse.c'),
+  and the parser is usually bundled into the library 'libsnmp.a'
 
 
 How does the agent fetch the value of a variable from the system?
@@ -416,45 +483,73 @@
 
   As from version 3.2, the parser has been re-written.  One effect of
   this is that only a specified set of MIB modules are read in by
-  default.  This list can be amended by using environmental variables.
-    The value of the environmental variable 'MIBS' will be taken as a
-  list of MIB module names to be read in from the mib directory (which
-  can itself be set using the environmental variable 'MIBDIRS')
-  Additional MIB files can be specified using the environmental
-  variable 'MIBFILES'.
-    Any MIB module required by those listed will also be loaded (as
-  long as it can be found), without needing to be explicitly
-  mentioned.
+  the tools by default.  This list can be set in a number of ways:
+
+    The tools have a default list compiled in, which can be set
+  using the configure option
+		--with-mibs="list"
+  and recompiling the tools.
+
+    The environmental variable 'MIBS' will be taken as a list of
+  module names (separated by colons) to be read in, instead of the
+  default list.  Note that any modules these rely on will be read in
+  automatically, without needing to be listed explicitly.
+
+    The environment variable 'MIBFILES' will be taken as a list of
+  filenames, containing MIB modules to be read in (in addition to those
+  included by 'MIBS' and/or the default list).  Again, any modules these
+  rely on will also be loaded in automatically.
+    The names listed in this variable can be anywhere in the filesystem,
+  though any implicitly loaded modules must be present in the standard
+  location(s). 
+
+    Finally, if the environmental variable 'MIBS' has the special
+  value "ALL", then the tools will load in every module present in
+  the module directory (or directories).
+
+    The location where the tools look for MIB module files is compiled
+  into the tools. This can also be set using the environmental
+  variable 'MIBDIRS', being a (colon-seperated) list of directories
+  containing MIB files. 
 
   See the 'mib_api(3)' man page for more details.
 
+
 What's this about a "party database", when I try to send a query?
 ----------------------------------------------------------------
 
-  By default, the applications send SNMPv2 (classic) queries.
-  This relies on party configuration information being available.
-  The easiest way to proceed is probably to use SNMPv1 instead.
-  Just give the option "-v 1" to any of the applications.
+  Previous releases of these tools sent SNMPv2 (classic) queries,
+  which relied on party configuration information being available.
+    With the current release, by default queries now use SNMPv2c,
+  which does not need any such party configuration.
 
+    In either case, it is possible to specify the use of SNMPv1
+  instead, by giving the application the option "-v 1".
+ 
 
 Why can't I see values in the UCDavis 'extensible' tree?
 -------------------------------------------------------
 Why can't I see values in the <INSERT ENTERPRISE HERE> tree?
 -----------------------------------------------------------
 
-  If you perform an 'snmpwalk' on an agent, without specifying a
-  starting point, it will return just the values in the 'mib-2' tree.
-  The same hold for any of the other tools provided.
-    To examine anything under the 'private.enterprises' branch
-  (or anywhere else in the MIB structure) you will need to specify
-  the full specification, starting from the root of the tree - e.g:
+  Normally, the tools assume that any object ID specified is
+  a full path, starting from the 'mib-2' node of the overall
+  MIB tree.  So if you perform an 'snmpwalk' on an agent, without
+  specifying a starting point, it will return just the values in
+  the 'mib-2' tree.
+
+    If you wsh to examine anything under the 'private.enterprises'
+  branch (or anywhere else in the MIB structure) you will need to
+  inform the tools appropriately.   There are two ways to do this:
+
+  First, you can give the full specification, starting from the root
+  of the tree - e.g:
 
 	.iso.org.dod.internet.private.enterprises.ucdavis
 
-  Alternatively, by defining the environmental variable PREFIX, the
-  tools can be told to look for non-fully specified objects in
-  a different sub-tree.  This can be done by the command
-
+  Alternatively, you can define the environmental variable PREFIX,
+  to specify where to start looking for ( non-fully specified) objects.
+  This can be done by the command
 							(C shell family)
 	setenv PREFIX  .iso.org.dod.internet.private.enterprises.ucdavis
   or
@@ -470,9 +565,50 @@
 I've done that, and I still can't see the values. Why not?
 ---------------------------------------------------------
 
-  The other possibility is that there is a clash of names
-somewhere within the MIB tree.  Try running the command
-'snmptranslate -x zzz' which will inform you of any duplicates.
+    Another possibility is that there is a clash of names
+  somewhere within the MIB tree.  Try running the command
+  'snmptranslate -x zzz' which will inform you of any duplicates,
+  or other similar problem.
+
+    This should be less of a problem with the new parser, which
+  now handles duplicate identifier names, though inconsistent
+  case in labels for the same node still confuse the poor darling.
+
+
+I've done that, and I'm *still* not getting anything back. Why not?
+------------------------------------------------------------------
+
+  Another possibility is that the agent you are querying is simply not
+  responding.  Try contacting it with a "reliable" query.
+  A good test is to do an 'snmpwalk' on the 'system' sub-tree.
+
+    Or it may be that the agent just doesn't implement the MIB
+  module that you're interested in.  Or it does, but is falling over
+  (software with bugs in - shock horror!)
+    Try doing an 'snmpwalk' starting somewhere above the offending bit
+  of the MIB tree, and seeing how far it gets.
+
+
+I've done that, but I'm *still* getting "sub-identifier not found:" Grrr!
+------------------------------------------------------------------------
+
+  If a "general" snmpwalk shows the entry, but asking for it more
+  specifically gives a "sub-identifier not found:" error, then that's
+  a slightly different problem.
+
+    The tools assume that the object ID they are given is a full path
+  starting from 'mib-2' (or wherever you have set PREFIX to).
+  You can't simply give the final sub-identifier, and expect the tools
+  to find the relevant node.  (Well, you can, but you'll be disappointed).
+    You need to specify the intermediate sub-identifiers as well.
+
+    For example
+		snmpget myhost public sysUpTime.0
+                                                     will fail, while
+		snmpget myhost public system.sysUpTime.0
+                                                          will work.
+  There are plans to include this "random access" feature (for unique
+  names at least), but this is not yet available.
 
 
 The agent is complaining about 'snmpd.conf'.  Where is this?
@@ -565,15 +701,16 @@
 
   The majority of MIB variables are "read-only" and cannot be changed.
 
-  Of those that can legitimately be set, many of them have not been
-  implemented in the agent - most of those that can are contained within
-  the 'system' sub-tree, relating to general contact information.
+  Of those that can in principle be changed, only a few have been
+  implemented as such in this agent.  Currently, most (if not all)
+  of these are contained within the 'system' sub-tree, relating to
+  general contact information.
     
   With the distribution as shipped, the community name "private" must
   be used to set these values.  This can be changed by setting the
   second community string (via the snmpd.conf entry "community 2 newstring").
-  Note that the community string "public" can *not* be used to set
-  variables.
+  Note that the (first) community string "public" can *not* be used
+  to set variables.
   
 
 Sometimes I seem to get the wrong answers.  Why?
@@ -642,4 +779,4 @@
 
 	*  FreeBSD & BSDi provide correct interface statistics
 	*  Solaris & HP-UX provide correct statistics throughout
-
+	*  Linux is likely to provide correct statistics throughout