README.solaris
$Id$

This document describes issues relating to compiling,
installing and using net-snmp on Solaris.

0.  Introduction
1.  Things you will need
2.  Disabling Sun's SNMP daemons
3.  Compiling net-snmp
4.  Obtaining and installing binaries
5.  Creating snmpd.conf and testing
6.  Creating your own binaries
7.  Using Sun's SNMP daemon and net-snmp together
8.  Monitoring disks, processes and execs (DISMAN-EVENT-MIB)
9.  Monitoring CPU temp, fan and power supply sensors (LM-SENSORS-MIB)
10.  MIB rewrites for IF-MIB, TCP-MIB and UDP-MIB

Additional compilation issues:

11.  Files descriptors and fopen
12.  Perl
13.  sed
14.  OpenSSL and crle
15.  IPv6
16.  Wish list

Other issues:

17.  Known Bugs!!
18.  Discussion and further information

------------------------------------------------------------

0.  Introduction

This document is a compilation of information relating to
running net-snmp (www.net-snmp.org) on Sun SPARC and Ultra
hardware under the Solaris operating system.

This can be done either in conjunction with or as a 
replacement for Sun's SNMP daemons.

This is discussed in detail in the sections below.  Since
this is the work of several authors, credit is given.
Discussion, however, should take place on the net-snmp-users
or net-snmp-coders mailing lists so everybody can
benefit.  See http://sourceforge.net/mail/?group_id=12694 .
Use "net-snmp-users" for general usage questions and "net-snmp-coders" for
discussion of net-snmp source code.  

No warranty is implied by this document.
This document is copyright but usage allowed under the same
licensing as net-snmp in general.  See http://www.net-snmp.org/COPYING.txt.

------------------------------------------------------------

1.  Things you will need

A.  Root access

Root access is required to follow pretty much any of
the steps below.  At a bare minimum, you will need
to be able to start and stop daemons, which requires root
(at least for the default ports).

B.  Determine existing SNMP functionality

SNMP uses ports 161 and 162 by default.  Only one application
can use them at a time.  If there is an existing SNMP
application (eg. Sun's snmpdx daemon) you need to either
turn this off or work around it.   You may also have
a previous version of net-snmp, the older ucd-snmp, or
something completely different.  The following commands:

   ps -ef | grep snm
   ps -ef | grep mibi

will give you a fairly good idea what is going on.

If you see something like:

  root 643 1 0 Jan 16 ? 5:49 /usr/local/sbin/snmpd

that's probably a version of net-snmp.  The instructions in various
sections below should give you clues on what to do next.

If you see something like:

  root 16178 1 0 13:16:04 pts/2 0:00 /usr/lib/snmp/snmpdx -y -c /etc/snmp/conf

and/or 

  root 21371 1 0 Feb 07 ? 0:52 mibiisa -r -p 41178

then Sun's SNMP daemons are running.  

If you need this, for example if you use the Solstice Enterprise
Agent, you may wish to run net-snmp as a sub-agent (see section 7).
Otherwise, you will need to disable Sun's daemons (see section 2).

Regardless you may wish to compile net-snmp from source
and install it (see sections 3, 5 and 6) or install
binaries (see sections 4 and 5).  

If some other SNMP daemon is running, you will need to determine
where it came from and what it's being used for.  You get clues by
typing "snmpd -v" or "snmpd --help".  In some cases it may be
a subagent or agent from another application, such as ORACLE.  If
you disable its agent, you will need to re-create this functionality
under net-snmp (eg. by running it as a sub-agent).  ORACLE's SNMP
functionality is turned on by default and may be unnecessary if
you aren't using ORACLE's Enterprise Manager.  Refer to ORACLE's
documentation on how to disable it.


If you have decided to compile your own net-snmp, you will need ...

C.  A compilation environment

-a compiler (gcc or Sun's Forte cc) or the gcc libraries
   (note, the cc in /usr/ucb is NOT a full-blown compiler)
-OpenSSL (sunfreeware.com or source www.openssl.org)
-zlib (sunfreeware.com or source www.gzip.org/zlib/)
-an SNMP community string ("public" is deprecated)

If you are installing on a development machine, it may be best
to compile OpenSSL and zlib from source, otherwise
obtain the appropriate zlib for your platform from sunfreeware
and install (it goes to /usr/local automatically).
Obtain the appropriate OpenSSL for your platform from sunfreeware
and install (it goes to /usr/local), you may need the gcc libraries.
These libraries should not need to be installed if you are using
binaries, but your mileage may vary.  Note the library problem
with libcrypto noted below (section 14).

There are two choices for compilers.  Sun has a Forte development
suite that includes a standalone C compiler.  If you have it, it
is likely installed in /opt/SUNWspro/bin.  

The more common choice is gcc (2.95.3 or better have been tested)
available from sunfreeware.com.  If you install gcc, you do not
need the gcc libraries.  3.3.2 or later is recommended.

Given that net-snmp is developed to work on a wide variety of
platforms, but especially for linux, there's a better chance of
it working using gcc at any given time. We also do regular test
builds with Sun cc, though.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>
 -- Thomas Anders <tanders@users.sourceforge.net>

------------------------------------------------------------

2.  Disabling Sun's SNMP daemons

Note:  Sun has started to include net-snmp (version 5.0.9 plus their
patches) with Solaris 10 and later.  These instructions are written 
with Solaris 9 and previous in mind.

Out of the box, Sun runs four SNMP daemons: mibiisa, idmispd, 
snmpXdmid and snmpdx. 

These must be disabled before running net-snmp unless you are planning
on running them together (see Section 7 below).  Here is the procedure:

   cd /etc/rc3.d
   ./S76snmpdx stop
   ./S77dmi stop
   mv S76snmpdx s76snmpdx
   mv S77dmi s77dmi

If you are using Solstice Disksuite, you may also be running
mdlogd.  Leave this alone.

You will need to create a new script to start net-snmp.
See dist/snmpd-init.d and dist/snmptrapd-init.d for templates.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

3.  Compiling net-snmp

It is strongly recommended that you compile net-snmp from source.
That way you are guaranteed a working version for your specific 
configuration of operating system, applications and libraries.

If, for some reason, you cannot compile on a specific machine, 
there are binaries available for download (see section 4).  
In addition, you may create your own binaries (see section 6).

You need to set your $PATH.  This is extremely important
because otherwise there may be conflicts between the various 
components of the development environment.

If you are using FORTE:

PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/SUNWspro/bin:/usr/local/bin:

If you are using gcc (installed in /usr/local/bin):

PATH=/usr/sbin:/usr/local/bin:/usr/ccs/bin:/usr/bin

Obtain a current version of net-snmp (which, if you're reading this,
presumably you have - don't you love recursion?) www.net-snmp.org/download/

Uncompress it and untar it in a working directory eg. /usr/local/src/net-snmp

In order to save a lot of typing, you should create a "configure" 
script eg. bcc.sh in the directory below eg. /usr/local/src.

   ./configure --with-mib-modules="ucd-snmp/lmSensors ucd-snmp/diskio \
      smux mibII/mta_sendmail" --with-cc=gcc

(note, see the long discussion about Perl below)
(note, substitute "cc" for "gcc" as appropriate)
(note, for LM-SENSORS-MIB support, see discussion below)

then call this script from the net-snmp directory ie ../bcc.sh

and answer the appropriate questions (usually with the default).

When it completes, you should see something like:

---------------------------------------------------------
            Net-SNMP configuration summary:
---------------------------------------------------------

  Net-SNMP Version:           5.4
  Building for:               solaris2
  Network transport support:  Callback Unix TCP UDP
  SNMPv3 Security Modules:    usm
  Agent MIB code:             mibII ucd_snmp snmpv3mibs notification target 
  \agent_mibs agentx agent_mibs utilities host disman/event-mib 
  \ucd-snmp/diskio smux agentx mibII/mta_sendmail
  SNMP Perl modules:          disabled
  Embedded perl support:      disabled
  Authentication support:     MD5 SHA1
  Encryption support:         DES

Type:

   make

and watch for compile errors.  

You will receive numerous warnings.  This is normal,
a side effect of supporting a variety of development environments.

Now type:

   make test

and watch for failures.  Also watch for the special tests for Solaris.

If you are satisfied with the tests, stop any snmpd daemons 
that may be running (see section 2) and type:

   make install

When complete, go on to section 5 below.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

4.  Obtaining and installing binaries

It is strongly recommended that you compile net-snmp from source.
That way you are guaranteed a working version for your specific
configuration of operating system, applications and libraries.

Binaries for Solaris may be found in two locations.

www.sunfreeware.com - this installs as a package.  
It does not have Perl support.

Therefore, I recommend:

   http://net-snmp.sourceforge.net/download/  (you will be redirected)

This is the official repository for binaries.

To determine which binary you need, you will need several pieces of
information.

-operating system version,
-hardware platform
-net-snmp version desired

The first two may be obtained by typing:

   uname -a

It will return something like:

SunOS foo 5.8 Generic_108528-14 sun4u sparc SUNW,Ultra-4

5.8 means Solaris 8
5.7 means Solaris 7  etc.

"sun4u" is the Ultra hardware platform
"sun4m" is SuperSPARC  eg. Sparc 5 or Sparc 10
"sun4d" is older SPARC boxes.  

You can then decode the binary version by its name eg.:

net-snmp_5.0.9-SunOS_5.8_sun4u.tar.gz

means "net-snmp version 5.0.9 for Solaris 8 running on Ultra
hardware".

Once you have found the appropriate version, download it to a
distribution directory (making one if necessary) eg. /usr/local/dist

Type the following: (using the sample above)

   cd /
   tar -xvf /usr/local/dist/net-snmp-5.0.9-SunOS_5.8_sun4u.tar

The binaries, libraries, etc. will be installed in /usr/local.

Remove the tar file to save space.  Create an snmpd.conf (see below)
or use an existing one from another machine.
It installs in /usr/local/share/snmp.

Install a startup script (see section 1).

For further information, see README.solaris.binaries.x that ships
with the binaries.

--Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

5.  Creating snmpd.conf and testing

When everything is installed, run:

   snmpconf -g basic_setup

and answer the questions appropriately.  If you are using
the defaults, place the resulting snmpd.conf file in:

/usr/local/share/snmp/snmpd.conf

A security note - use of the "public" community is deprecated.
This example uses "whatever" as a community.

When you have the daemon running either with the script above or running:

   /usr/local/sbin/snmpd

test the daemon's functionality by typing:

   snmpget -v 1 -c whatever localhost sysUpTime.0
   snmpwalk -v 2c -c whatever -m ALL localhost .1.3 | more

and paging through the results.  

If you have problems, you can examine diagnostic messages
by running:

   /usr/local/sbin/snmpd -f -Le

or use gdb (available from www.sunsolve.com) as follows:

   cd /usr/local/sbin
   gdb snmpd
   run -f -Le

and when it blows up:

   bt

to get the backtrace.  

You can use:

   run -f -Le -D <modulename>

to display debug messages.

To display all debug messages type:

   run -f -Le -D ALL 

but this will be extremely verbose.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca> with suggestions by Thushara Wickram

------------------------------------------------------------

6.  Creating your own binaries

Pick an appropriate name for a tarfile 
eg. net-snmp-5.4.custom-SunOS_5.8_sun4u.tar (see above)
(this particular one means "a customized version of
net-snmp 5.4 that works under Solaris 8 running on Ultra hardware")

Create an empty directory such as /usr/local/dist, then do the following
from the source directory (using the example above):

   make install prefix=/usr/local/dist/usr/local \
        exec_prefix=/usr/local/dist/usr/local
   cd /usr/local/dist
   tar -cvf net-snmp-5.4.custom-SunOS_5.8_sun4u.tar usr

Transfer this file to the machine where you want to install from binary.
Place it in a distribution directory eg. /usr/local/dist
Type the following (using the example above):

   cd /
   tar -xvf /usr/local/dist/net-snmp-5.4.custom-SunOS_5.8_sun4u.tar

Remove the tar file to save space.  Create an snmpd.conf (see above)
or use an existing one from another machine.  If you are using
the defaults, it installs in /usr/local/share/snmp.  Install
a startup script (see section 2).

Note that if you create a binary with Perl support (see below) an
identically configured Perl needs to be installed as well.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

7.  Using Sun's SNMP daemon and net-snmp together

Net-SNMP may be used as a subagent in conjunction with Sun's snmpdx daemon.

To do this, you will need to modify several files, 
all located in /etc/snmp/conf.

First, do the following:

   /etc/rc3.d/S76snmpdx stop (assuming you haven't done so already, and...)
   /etc/rc3.d/S77dmi stop    (...assuming you haven't renamed them)

   cd /etc/snmp/conf
   cp snmpd.conf snmpd.conf.orig
   cp snmpdx.acl snmpdx.acl.orig
   cp snmpdx.reg snmpdx.reg.orig
   cp snmpdx.rsrc snmpdx.rsrc.orig
   cp mibiisa.reg mibiisa.reg.orig
   cp mibiisa.rsrc mibiisa.rsrc.orig

modify snmpd.conf with the correct:

   sysdescr
   syscontact
   sysLocation
   system-group-read-community
   read-community (in my example below I will use community "whatever")
   trap 
   trap-community
   managers (leave blank for all)

modify snmpdx.acl with the correct:

   trap-community
   trap-recipients
   communities
   access

Make sure that in snmpdx.reg the port is 161.

You will now need to add two files - net-snmp.reg and net-snmp.rsrc

In this example, "subtrees" is set for HOST-RESOURCES-MIB, and UCD-SNMP-MIB.
Do not use net-snmp's MIB-2 information as this is already provided by 
Sun's mib and may cause a conflict.

::::: net-snmp.reg ::::::

# net-snmp.reg
# mib-2 is already provided by the mibiisa process
# that is a default sub agent of snmpdx
# we are specifying only hostmib and ucd 
##########
# agents #
##########
 
# The following 3 macros are predefined:
#
#       mib-2      =    1.3.6.1.2.1
#       enterprise =    1.3.6.1.4.1
#       sun        =    1.3.6.1.4.1.42
#
# You can define your own macros, so that you can
# manipulate strings instead of OIDs in defining the agent.
# See the "agent" section below.

macros =
{
        host = mib-2.25
        ucd  = enterprise.2021
}

agents =
{
        {
                 name = "net-snmp"
                 subtrees = { host,ucd }
                 timeout = 2000000
                 watch-dog-time = 86400
        }
}

::::::::::::::::::

::::: net-snmp.rsrc ::::::

# /etc/snmp/conf/net-snmp.rsrc

resource =
{
        {
                registration_file = "/etc/snmp/conf/net-snmp.reg"
                policy = "spawn"
                type = "legacy"
                command = "/usr/local/sbin/snmpd $PORT"  
      }
 
}

::::::::::::::::::

Stop any net-snmp processes that may be running.  

Start Sun's daemons by typing:

   /etc/rc3.d/S76snmpdx start (assuming you haven't renamed it)
   /etc/rc3.d/S77dmi start    (assuming you haven't renamed it)

Wait a moment for everything to stabilize, then try these two queries:

   snmpget -v 1 -c whatever localhost sysDescr.0
   snmpget -v 1 -c whatever localhost hrSystemUptime.0

You should see something like:

   SNMPv2-MIB::sysDescr.0 = STRING: SunOS foo 5.6 Generic_105181-30 sun4u

which is Sun's daemon talking, and:

   HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (78540910) 9 days, 2:10:09.10

which is net-snmp talking.  It is acting as a sub-agent through Sun's daemon.

If Sun's daemons fail, you will need to shut down the snmpd daemons by typing:

   pkill snmpd

Then do the following:

   /etc/rc3.d/S76snmpdx stop  (assuming you haven't renamed it)
   /etc/rc3.d/S77dmi stop     (assuming you haven't renamed it)
   /etc/rc3.d/S76snmpdx start (assuming you haven't renamed it)
   /etc/rc3.d/S77dmi start    (assuming you haven't renamed it)

rather than trying to individually clobber all the various Sun daemons.

This configuration appears to deal properly with snmpgets 
and handle mistakes gracefully.

Beyond this, your mileage may vary.

You may wish to modify the subtrees in net-snmp.reg as you find things
that do and don't work.  Remember to keep backup copies of working
configurations.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca> from notes by Stefan Radman and C Wells

------------------------------------------------------------

8.  Monitoring disks, processes and execs (DISMAN-EVENT-MIB)

Important note: this section only applies to the old DISMAN-EVENT-MIB 
implementation called "disman/event-mib", *not* the current "disman/event" 
mib module which is active by default since net-snmp 5.3 and later.

For a full explanation of using DISMAN-EVENT-MIB, see:

http://www.net-snmp.org/man/snmpd.conf.html

To use this component, net-snmp must be compiled with the option..

--with-mib-modules="disman/event-mib"

This discussion concerns the use of DISMAN-EVENT-MIB with Solaris.

There is a bug preventing the use of some of its functionality.  This
discussion will document what is known to work and how to use it.

The problem revolves around the use of monitors.  The...

defaultMonitors yes

token will NOT work for reasons discussed below.  I suspect that the
notificationEvent tokens will not work for the same reason but this
has not been tested.  Your mileage may vary.  Same with includeAllDisks.

The documentation suggests using...

monitor -o prNames -o prErrMessage "process table" prErrorFlag != 0

to monitor all processes.  This will fail with ambiguous results.

To monitor processes, put a separate monitor line for each process.

For example:
######
proc smail
proc mdlogd

monitor -r 30 -i -o prNames.1 -o prErrMessage.1 "Process smail" prErrorFlag.1 !=0
monitor -r 30 -i -o prNames.2 -o prErrMessage.2 "Process Solstice Disksuite SNMP trap" prErrorFlag.2 !=0

To monitor disks, do the same.  An example:

########
# This example sends a trap if root has less than 10% available and /usr6 less t
han 90%
#
disk / 10%
disk /usr6 90%

monitor -i -r 30 -o dskPath.1 -o dskErrorMsg.1 "root file system" dskErrorFlag.1 !=0
monitor -i -r 30 -o dskPath.2 -o dskErrorMsg.2 "ORACLE file system" dskErrorFlag.2 != 0
#########

To implement an external program then monitor its results you need to set up your script.

Here is a sample script.

#!//usr/bin/ksh
xstatus=0

if [ $xstatus -eq 0 ];then
echo success: $0
else
echo FAILURE: $0
fi

exit $xstatus
###end of script tester##

Place this script in /usr/local/src and make it executable.  Make copies called
tester1, tester2 etc.
and make them executable.

Here is a sample snmpd.conf snippet that makes use of the exec feature:
##############

exec tester1 /usr/local/src/tester1
exec tester2 /usr/local/src/tester2
exec tester3 /usr/local/src/tester3
exec tester4 /usr/local/src/tester4
exec tester5 /usr/local/src/tester5

monitor -i -r 60 -o extNames.1 -o extOutput.1 "status table 1" extResult.1 != 0
monitor -i -r 60 -o extNames.2 -o extOutput.2 "status table 2" extResult.2 != 0
monitor -i -r 60 -o extNames.3 -o extOutput.3 "status table 3" extResult.3 != 0
monitor -i -r 60 -o extNames.4 -o extOutput.4 "status table 4" extResult.4 != 0
monitor -i -r 60 -o extNames.5 -o extOutput.5 "status table 5" extResult.5 != 0
##############

While snmpd is running, go to /usr/local/src and modify one of the tester programs eg. tester1

xstatus=1

and save the file.  Sometime in the next 60 seconds, a trap will be generated.
Change the value back to 0, then modify another file.

If you are unsure of the correct row number within a specific table, do an snmpwalk eg.

snmpwalk -v 2c -c public -m ALL localhost prNames

The same methodology can presumably be used for fileName and laNames.  Your mileage may vary.


 -- Bruce Shaw <Bruce.Shaw at shaw.ca>  with Allan McIntosh and Wes Hardaker

------------------------------------------------------------

9.  Monitoring CPU temp, fan and power supply sensors (LM-SENSORS-MIB)

Note: This module (ucd-snmp/lmSensors) works in "read only" mode to examine 
sensors.  It cannot change switch or fan settings.

It has been tested at least on the following platforms:

Enterprise 450
V880
280R

If you have information about other platforms this is desperately needed.  For 
example, the only "state" that I'm aware of for an i2c is "OK".  The more
information we have, the richer the components.

Please report any performance statistics, bugs or omissions to the users list.
Please report any code suggestions to the coders list.  See links below.


This component delivers information that you would normally see by typing:

/usr/platform/`uname -m`/sbin/prtdiag -v

At present this is only supported on the Ultra (sun4u) platform.

To display this information, net-snmp must be compiled with the option:

--with-mib-modules="ucd-snmp/lmSensors"

Early Ultra servers such as the Ultra 1 or Ultra 2 did not report
any sensor information at all.  Later servers, such as the Enterprise 450
reported this information using kstat.  Sun's latest servers make use
of the picld daemon to control system resources and report fan information.
This module reads in the information from picld.  It cannot modify settings.

You can see this information by typing:

prtpicl -v | more

The following is typical output from net-snmp:

E450# snmpwalk -v 2c -c public -m ALL localhost lmSensors
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Ambient
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: CPU1
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: CPU2
LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: CPU3
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 22
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 45
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 46
LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 49
LM-SENSORS-MIB::lmFanSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmFanSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmFanSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmFanSensorsDevice.1 = STRING: fan type CPU number 0
LM-SENSORS-MIB::lmFanSensorsDevice.2 = STRING: fan type PWR number 0
LM-SENSORS-MIB::lmFanSensorsDevice.3 = STRING: fan type AFB number 0
LM-SENSORS-MIB::lmFanSensorsValue.1 = Gauge32: 33
LM-SENSORS-MIB::lmFanSensorsValue.2 = Gauge32: 31
LM-SENSORS-MIB::lmFanSensorsValue.3 = Gauge32: 63
LM-SENSORS-MIB::lmVoltSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmVoltSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmVoltSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmVoltSensorsDevice.1 = STRING: power supply 0
LM-SENSORS-MIB::lmVoltSensorsDevice.2 = STRING: power supply 1
LM-SENSORS-MIB::lmVoltSensorsDevice.3 = STRING: power supply 2
LM-SENSORS-MIB::lmVoltSensorsValue.1 = Gauge32: 38
LM-SENSORS-MIB::lmVoltSensorsValue.2 = Gauge32: 39
LM-SENSORS-MIB::lmVoltSensorsValue.3 = Gauge32: 39
LM-SENSORS-MIB::lmMiscSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmMiscSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmMiscSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmMiscSensorsDevice.1 = STRING: FSP
LM-SENSORS-MIB::lmMiscSensorsDevice.2 = STRING: Backplane4
LM-SENSORS-MIB::lmMiscSensorsDevice.3 = STRING: Backplane8
LM-SENSORS-MIB::lmMiscSensorsValue.1 = Gauge32: 192
LM-SENSORS-MIB::lmMiscSensorsValue.2 = Gauge32: 0
LM-SENSORS-MIB::lmMiscSensorsValue.3 = Gauge32: 0

V880# snmpwalk -v 2c -c public -m ALL localhost lmSensors
LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 3
LM-SENSORS-MIB::lmTempSensorsIndex.5 = INTEGER: 4
LM-SENSORS-MIB::lmTempSensorsIndex.6 = INTEGER: 5
LM-SENSORS-MIB::lmTempSensorsIndex.7 = INTEGER: 6
LM-SENSORS-MIB::lmTempSensorsIndex.8 = INTEGER: 7
LM-SENSORS-MIB::lmTempSensorsIndex.9 = INTEGER: 8
LM-SENSORS-MIB::lmTempSensorsIndex.10 = INTEGER: 9
LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: CPU0_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: CPU2_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: CPU1_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: CPU3_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.5 = STRING: CPU4_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.6 = STRING: CPU6_DIE_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.7 = STRING: MB_AMB_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.8 = STRING: IOB_AMB_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.9 = STRING: DBP0_AMB_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsDevice.10 = STRING: DBP1_AMB_TEMPERATURE_SENSOR
LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 71
LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 60
LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 66
LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 59
LM-SENSORS-MIB::lmTempSensorsValue.5 = Gauge32: 65
LM-SENSORS-MIB::lmTempSensorsValue.6 = Gauge32: 69
LM-SENSORS-MIB::lmTempSensorsValue.7 = Gauge32: 28
LM-SENSORS-MIB::lmTempSensorsValue.8 = Gauge32: 25
LM-SENSORS-MIB::lmTempSensorsValue.9 = Gauge32: 25
LM-SENSORS-MIB::lmTempSensorsValue.10 = Gauge32: 24
LM-SENSORS-MIB::lmFanSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmFanSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmFanSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmFanSensorsIndex.4 = INTEGER: 3
LM-SENSORS-MIB::lmFanSensorsIndex.5 = INTEGER: 4
LM-SENSORS-MIB::lmFanSensorsIndex.6 = INTEGER: 5
LM-SENSORS-MIB::lmFanSensorsIndex.7 = INTEGER: 6
LM-SENSORS-MIB::lmFanSensorsIndex.8 = INTEGER: 7
LM-SENSORS-MIB::lmFanSensorsIndex.9 = INTEGER: 8
LM-SENSORS-MIB::lmFanSensorsIndex.10 = INTEGER: 9
LM-SENSORS-MIB::lmFanSensorsDevice.1 = STRING: CPU0_PFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.2 = STRING: CPU1_PFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.3 = STRING: CPU0_SFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.4 = STRING: CPU1_SFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.5 = STRING: IO_BRIDGE_PFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.6 = STRING: IO_BRIDGE_SFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.7 = STRING: IO0_PFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.8 = STRING: IO1_PFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.9 = STRING: IO0_SFAN_TACH
LM-SENSORS-MIB::lmFanSensorsDevice.10 = STRING: IO1_SFAN_TACH
LM-SENSORS-MIB::lmFanSensorsValue.1 = Gauge32: 2439
LM-SENSORS-MIB::lmFanSensorsValue.2 = Gauge32: 2586
LM-SENSORS-MIB::lmFanSensorsValue.3 = Gauge32: 2459
LM-SENSORS-MIB::lmFanSensorsValue.4 = Gauge32: 2564
LM-SENSORS-MIB::lmFanSensorsValue.5 = Gauge32: 3409
LM-SENSORS-MIB::lmFanSensorsValue.6 = Gauge32: 0
LM-SENSORS-MIB::lmFanSensorsValue.7 = Gauge32: 3947
LM-SENSORS-MIB::lmFanSensorsValue.8 = Gauge32: 3896
LM-SENSORS-MIB::lmFanSensorsValue.9 = Gauge32: 4000
LM-SENSORS-MIB::lmFanSensorsValue.10 = Gauge32: 3896
LM-SENSORS-MIB::lmVoltSensorsIndex.1 = INTEGER: 0
LM-SENSORS-MIB::lmVoltSensorsIndex.2 = INTEGER: 1
LM-SENSORS-MIB::lmVoltSensorsIndex.3 = INTEGER: 2
LM-SENSORS-MIB::lmVoltSensorsIndex.4 = INTEGER: 3
LM-SENSORS-MIB::lmVoltSensorsIndex.5 = INTEGER: 4
LM-SENSORS-MIB::lmVoltSensorsIndex.6 = INTEGER: 5
LM-SENSORS-MIB::lmVoltSensorsIndex.7 = INTEGER: 6
LM-SENSORS-MIB::lmVoltSensorsIndex.8 = INTEGER: 7
LM-SENSORS-MIB::lmVoltSensorsIndex.9 = INTEGER: 8
LM-SENSORS-MIB::lmVoltSensorsIndex.10 = INTEGER: 9
LM-SENSORS-MIB::lmVoltSensorsIndex.11 = INTEGER: 10
LM-SENSORS-MIB::lmVoltSensorsIndex.12 = INTEGER: 11
LM-SENSORS-MIB::lmVoltSensorsDevice.1 = STRING: PS0_3_3V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.2 = STRING: PS0_5V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.3 = STRING: PS0_12V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.4 = STRING: PS0_48V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.5 = STRING: PS1_3_3V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.6 = STRING: PS1_5V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.7 = STRING: PS1_12V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.8 = STRING: PS1_48V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.9 = STRING: PS2_3_3V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.10 = STRING: PS2_5V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.11 = STRING: PS2_12V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsDevice.12 = STRING: PS2_48V_I_SENSOR
LM-SENSORS-MIB::lmVoltSensorsValue.1 = Gauge32: 6
LM-SENSORS-MIB::lmVoltSensorsValue.2 = Gauge32: 4
LM-SENSORS-MIB::lmVoltSensorsValue.3 = Gauge32: 3
LM-SENSORS-MIB::lmVoltSensorsValue.4 = Gauge32: 4
LM-SENSORS-MIB::lmVoltSensorsValue.5 = Gauge32: 6
LM-SENSORS-MIB::lmVoltSensorsValue.6 = Gauge32: 4
LM-SENSORS-MIB::lmVoltSensorsValue.7 = Gauge32: 3
LM-SENSORS-MIB::lmVoltSensorsValue.8 = Gauge32: 4
LM-SENSORS-MIB::lmVoltSensorsValue.9 = Gauge32: 6
LM-SENSORS-MIB::lmVoltSensorsValue.10 = Gauge32: 4
LM-SENSORS-MIB::lmVoltSensorsValue.11 = Gauge32: 3
LM-SENSORS-MIB::lmVoltSensorsValue.12 = Gauge32: 4

This component also reports information for switches, LEDs
and i2c's (devices accessing the i2c bus).
Because the MIB only allows us to display numeric
information a certain amount of translation has been done.

Switches:

0 = OFF
1 = ON
2 = NORMAL
3 = LOCKED
4 = UNKNOWN
5 = DIAG
6 = SECURE
99 = other

LEDs:

0 = OFF
1 = ON
2 = BLINK (this may not exist)
99 = other

i2c's:
0 = OK
99 = other

In order to prevent inordinant consumption of machine resources,
some sensor information is cached.  Currently, information
retrieved from picld is cached for six seconds.  

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

10.  MIB rewrites for IF-MIB, TCP-MIB and UDP-MIB

net-snmp 5.4 has started to include rewrites for the IF-MIB, TCP-MIB and
UDP-MIB implementations. They need to be explicitely enabled, though:

  ./configure --enable-mfd-rewrites ...

See the Net-SNMP Wiki (http://www.net-snmp.org/wiki/index.php/IF-MIB_rewrite)
for further details.

Thanks to Sun for the excellent patches.


 -- Thomas Anders <tanders@users.sourceforge.net>

------------------------------------------------------------

11.  Files descriptors and fopen

Solaris has a limitation on the number of file descriptors (255)
available in stdio, so that fopen() fails if more than
255 file descriptors (sockets) are open. This prevents mibs from 
being loaded after 250 sockets are open, since parse.c uses stdio.

SEan <burke_sp@pacbell.net> investigated this problem, and had this
report on using the SFIO package to solve this problem.

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The SFIO package ( http://www.research.att.com/sw/tools/sfio/ ) 
is a buffered streams IO package that is much more more sophisticated 
than stdio, but it does support stdio API's for backward compatibility,
and that's the aspect that is important here.

To compile with SFIO, we simply add -I/usr/local/sfio/include to the
$CPPFLAGS before compiling net-snmp. This causes SFIO's stdio.h to
preempt Solaris stdio, mapping calls like fopen() and fprintf() to
the SFIO implementations. This produces a libnetsnmp that does not
have the fopen() limitation. Any application that links to this 
libnetsnmp must also be linked to libsfio. 

Here are the two caveats:

A. libsfio exports the functions 'getc' and 'putc', for reasons that
are not clear. These are the only symbols it exports that conflict
with stdio. While getc and putc are traditionally macros, Solaris
makes them functions in multithreaded code (compiled with -mt,
-pthread, or -D_REENTRANT). If your native stdio code links to the
libsfio versions, a crash will result.

There are two solutions to this problem. You may remove getc and putc 
from libsfio, since SFIO defines getc and putc as macros, by doing:

	ar d libsfio.a getc.o
	ar d libsfio.a putc.o

or link to SFIO's stdio compatibility library, libstdio, ahead of
libsfio. This library wraps all of the native stdio calls with 
versions that are safe for native or sfio streams, in case you
need to share streams between SFIO and native stdio codes.

B. libsfio provides 64-bit offsets in fseek(), ftell(). This is
a good thing, since SFIO is intended to avoid needless limitations,
but it means that SFIO's stdio.h defines off_t to be a 64-bit offset. 
Net-SNMP uses readdir(), which returns a struct dirent containing 
a 32-bit off_t, so the code compiled for SFIO doesn't access 
struct dirent's correctly.

There are two solutions to this problem, as well. The first is to
include <dirent.h> at the start of SFIO's stdio.h. Since SFIO 
defines a macro substitution for off_t, this leaves struct dirent's 
definition unchanged.

An alternative, which I haven't verified, is to define _FILE_OFFSET_BITS
to be 64 when compiling libnetsnmp. According to what I see in Solaris's 
/usr/include/sys/feature_tests.h, you can select a 64-bit off_t at 
compile time with this setting, which should make readdir()'s off_t 
compatible with SFIO's ftell(), fseek().
 [[ We have received reports that this approach does not in fact work 
(see Perl discussion below)]]

Finally, thanks to Phong Vo and AT&T Labs for a fast, robust and
portable package that solves this headache very neatly.

-SEan <burke_sp@pacbell.net>

------------------------------------------------------------

12.  Perl

Net-SNMP may be compiled with Perl support by configuring like:

   ./configure -enable-embedded-perl ...

It's recommended to add --enable-as-needed for proper libperl linking.

Enabling Perl support should only be done if you are sure you really 
need Perl, for the following reasons:

Solaris 8 and later ship with a version of Perl compiled using Sun's cc. 

This causes a problem when attempting to compile net-snmp 
with Perl functionality ie.:

   ./configure --with-mib-modules="ucd-snmp/lmSensors ucd-snmp/diskio \
      smux mibII/mta_sendmail" --enable-embedded-perl

because during the Perl section of the compile, it attempts to do so 
using the methodology used to compile the original Perl, not
what you're currently using.  This can be discovered by typing:

   perl -V

and it says (among other things)

  Compiler:
    cc='cc'

and you don't have the full version of Sun's C compiler on your 
system, it's going to break.

In addition if it was compiled with:

   LFS_CFLAGS      -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

net-snmp will not compile correctly.

Given that the Perl provided with Solaris 8 (5.005_03) and Solaris 9 
(5.005_03 and 5.6.1) is somewhat stale, upgrading may be to your advantage.

Perl did not ship with Solaris before version 8.  If you installed a
version from www.sunfreeware.com, it is compiled with some extra flags
that cause the net-snmp compile to break.  

In either case, you will need to compile and install Perl.

There are, however, some issues.

A.  Some applications (eg. /usr/bin/kstat) require this exact version 
of Perl because of libraries.  These instructions below install Perl
in /usr/local/bin (and optionally /usr/bin/).  The original is left
intact in /usr/perl5/bin/perl where, in fact, the kstat script looks 
for it.  If you have version specific scripts, you will need to do
the same either by invoking /usr/perl5/bin/perl or putting:

#!/usr/perl/bin/perl -w

as the first line of your script and making it executable 
(see the /usr/bin/kstat source as an example).

B.  The instructions below disable large file support.  

This means that Perl would be unable to deal
successfully with files larger than 2 Gb.  
Again, using /usr/perl5/bin/perl or a version compiled
with this functionality would solve this.

Hence the ideal solution is a net-snmp specific Perl in its own directory.

The following instructions will install a working Perl in /usr/local/net-snmp.

Install gcc version 3.3.2 (or later) from www.sunfreeware.com.

Download the current stable release of Perl

   http://www.cpan.org/src/stable.tar.gz 

and gunzip and untar.  (This document assumes Perl 5.8.3 or later)

cd to the source directory and type the following:

  sh Configure -Dcc=gcc -Dprefix=/usr/local/net-snmp -Uinstallusrbinperl \
               -Duseshrplib -Dcf_email=your_email@your_domain \
               -Dperladmin=your_email@your_domain -Uuselargefiles -de

Replace your_email@your_domain by your real email address. If you intend
to compile Net-SNMP with Sun cc later on, replace gcc with cc above.

When it is finished, do:

   grep cppsymbols config.sh

and make sure "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" does NOT appear.

Then do:

   make
   make test  (optional)
   make install
   /usr/local/net-snmp/bin/perl -V

if everything looks all right, compile net-snmp (see above) with the 
following differences:

env PERLPROG=/usr/local/net-snmp/bin/perl ./configure --enable-embedded-perl \ 
 --with-mib-modules=ucd-snmp/lmSensors,ucd-snmp/diskio,smux,mibII/mta_sendmail \
 --with-cc=gcc && make && make test && make install

Make sure you specify the correct path to your self-compiled Perl binary
and use the same compiler like the one you used when building Perl above.
Feel free to add other configure options, of course.

"make test" includes some tests for the Net-SNMP Perl functionalities.

Once you have compiled and installed net-snmp you can test the Perl 
capabilities of the final installation by doing the following:

Copy the perl_module.pl script found at 

http://www.net-snmp.org/tutorial-5/toolkit/perl/index.html

to /usr/local/net-snmp

and modify your /usr/local/share/snmp/snmpd.conf file to contain the entry:

perl do "/usr/local/net-snmp/perl_module.pl";

then do:

/usr/local/bin/snmpwalk -v 2c -c whatever localhost .1.3.6.1.4.1.8072.999

It should return the following:

NET-SNMP-MIB::netSnmp.999.1.2.1 = STRING: "hello world"

WARNING!!  If you are planning on creating binary versions of net-snmp with 
Perl capability, you will also need to ship the Perl which you created in 
/usr/local/net-snmp.

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>
 -- Thomas Anders <tanders@users.sourceforge.net>

------------------------------------------------------------

13.  sed

Various sed versions in older Solaris releases (Solaris 8 and earlier 
at least) have serious limitations that may affect ./configure
when building net-snmp. All these issues *should* have been addressed
in net-snmp 5.4 and later. If you still have problems, please let us know
and consider:

- installing GNU sed and putting it in front of your PATH
- installing the available Sun patches for the various sed versions
  (/usr/bin/sed, /usr/xpg4/bin/sed, /usr/ucb/sed)
- try the suggestions below

The version of sed in /usr/ucb on Solaris 2.5.1 and 2.6 can't
cope with the size of the substitution strings used in config.status.

Putting /usr/bin ahead of /usr/ucb in the search path fixes this.

/usr/xpg4/bin/sed is seen to segfault under Solaris 8 when running configure.
Putting /usr/bin ahead of /usr/xpg4/bin fixes this.


 -- Thomas Anders <tanders@users.sourceforge.net>
 -- zach dot metzinger at microtune dot com

------------------------------------------------------------

14.  OpenSSL and crle

If compiling with OpenSSL (e.g. from sunsolve), it's possible that
the agent won't successfully load the crypto library (typically
in /usr/local/ssl/lib) when it is in use and will return a
cannot find library error message of some sort.

To rectify this, you will need to use the /usr/bin/crle command, which
did NOT ship with some versions of Solaris, but came as part of later
patches.  You should make sure the following patches are up to date:

107733 (Solaris 2.6)
106950 (Solaris 2.7)
109147 (Solaris 8)
115833 (Trusted Solaris 8)
112693 (Solaris 9)

Then type the following:

/usr/bin/crle

It will return something like:

Default configuration file (/var/ld/ld.config) not found
  Default Library Path (ELF):  /usr/lib (system default)
  Trusted Directories (ELF):   /usr/lib/secure (system default)

Find the location of the libcrypto libraries by typing:

find /usr -name "libcrypto*" -print

which will probably display:

/usr/local/ssl/lib/libcrypto.a
/usr/local/ssl/lib/libcrypto.so
/usr/local/ssl/lib/libcrypto.so.0
/usr/local/ssl/lib/libcrypto.so.0.9.7

which is the default installation for OpenSSL.

To include this in the loader search path, type:

/usr/bin/crle -u -l /usr/local/ssl/lib

/usr/bin/crle will now display:

Configuration file [3]: /var/ld/ld.config  
  Default Library Path (ELF):   /usr/lib:/usr/local/ssl/lib
  Trusted Directories (ELF):    /usr/lib/secure  (system default)

Command line:
  crle -c /var/ld/ld.config -l /usr/lib:/usr/local/ssl/lib

If this fails, usually by displaying:

crle: /var/ld/ld.config: open failed: No such file or directory

you will need to create this directory by hand by doing the following:

mkdir /var/ld
cd /var/ld
ln -s . 32
mkdir sparcv9
chgrp bin sparcv9
ln -s sparcv9 64
touch ld.config

then do:

crle -c /var/ld/ld.config -l /usr/lib:/usr/local/ssl/lib

Thanks to Dave Shield and Johannes Schmidt-Fischer

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

15. IPv6

Starting with net-snmp 5.4 you can enable the UDPIPv6 and TCPIPv6 
transports on Solaris:

   ./configure --enable-ipv6

There's no support for the mibII/ipv6 mib module, though.


 -- Thomas Anders <tanders@users.sourceforge.net>

------------------------------------------------------------

16. Wish list

A.  Code cleanup

There may be opportunities for shared code between UCD-SNMP 
and HOST-RESOURCES-MIB.

There may be opportunities to optimize caching perhaps 
using the new auto-caching code.

B.  LM-SENSORS-MIB

We need a complete list of sensors from various platforms so
they can be displayed properly.

C.  ORACLE

How to get ORACLE's SNMP functionality to work as a sub-agent.

D. Largefile support

Rework the host mib module to work even if net-snmp is built with
largefile support. This would eliminate the most important problems 
with Perl (see section 12).

 -- Bruce Shaw <Bruce.Shaw at shaw.ca>
 -- Thomas Anders <tanders@users.sourceforge.net>

------------------------------------------------------------

17.  Known Bugs!!

A.  hrDeviceTable (HOST-RESOURCES-MIB)

This section of code is only aware of disk controllers 0 through 7.
Hence, anything on controller c8 and above will be invisible.

B.  hrPartitionTable (HOST-RESOURCES-MIB)

At present, hrPartitionSize data only works for regular ufs
partitions eg. /dev/dsk/c0t0d0s0 that are mounted.  They
are displayed in partition order rather than the order
they are mounted.  Partitions mounted as mirrors, metastate
database replicas, swap or members of a RAID display size 0.

As a workaround, put entries for disks you are
interested in in snmpd.conf and examine
using UCD-SNMP-MIB.


 -- Bruce Shaw <Bruce.Shaw at shaw.ca>

------------------------------------------------------------

18.  Discussion and further information

For discussion or further information contact the coders and users
lists at http://sourceforge.net/mail/?group_id=12694 .

