@node SNMP Support, Zebra Protocol, Kernel Interface, Top
@comment  node-name,  next,  previous,  up
@chapter SNMP Support

SNMP (Simple Network Managing Protocol) is widely implemented feature
for collecting network information from router and/or host.  Quagga
itself does not support SNMP agent functionality.  But conjuction with
SNMP agent, Quagga provides routing protocol MIBs.

Quagga uses SMUX protocol (RFC1227) for making communication with SNMP
agent.  There are several SNMP agent which support SMUX.  We recommend
to use the latest @command{ucd-snmp} software.  

@menu
* How to get ucd-snmp::         
* SMUX configuration::          
@end menu

@node How to get ucd-snmp, SMUX configuration, SNMP Support, SNMP Support
@comment  node-name,  next,  previous,  up
@section How to get ucd-snmp

ucd-snmp is a free software which distributed so called "as is" software
license.  Please check the license which comes with distribution of
@command{ucd-snmp}.  The authors of ucd-snmp are the University of
California, the University of California at Davis, and the Electrical
Engineering department at the University of California at Davis.

You can get ucd-snmp from @url{ftp://ucd-snmp.ucdavis.edu/}.  As of this
writing we are testing with @command{ucd-snmp-4.1.pre1.tar.gz}.

To enable SMUX protocol support, please configure @command{ucd-snmp}
like below.

@example
% configure --with-mib-modules=smux
@end example

After compile and install @command{ucd-snmp}, you will need to configure
smuxpeer.  I'm now using configuration shown below.  This means SMUX client
connects to MIB 1.3.6.1.6.3.1 with password test.
  
@example
/usr/local/share/snmp/snmpd.conf
================================
smuxpeer 1.3.6.1.6.3.1 test
@end example

@node SMUX configuration,  , How to get ucd-snmp, SNMP Support
@comment  node-name,  next,  previous,  up
@section SMUX configuration

To enable SNMP support of Quagga, you have to configure Quagga with
@command{--enable-snmp} (@pxref{Configure the Software}).

@deffn {Command} {smux peer @var{oid}} {}
@deffnx {Command} {no smux peer @var{oid}} {}
@end deffn

@deffn {Command} {smux peer @var{oid} @var{password}} {}
@deffnx {Command} {no smux peer @var{oid} @var{password}} {}
@end deffn

@example
!
smux peer .1.3.6.1.6.3.1 test
!
@end example
