		      ucd-snmp Version: 4.0.pre3
DISCLAIMER

  The Authors, the University of California, the University of
  California at Davis, and the Electrical Engineering department at
  the University of California at Davis assume no responsibility for
  damage or loss of system performance as a direct or indirect result
  of the use of this software.  This software is provided "as is"
  without express or implied warranty.

TABLE OF CONTENTS

  Disclaimer
  Table Of Contents
  Introduction
* Supported Architectures
  Availability
  Web Page
* Installation
  Copying And Copyrights
* Frequently Asked Questions
  Helping Out
* Code Update Announcements
* Mailing Lists
  Agent Extensibility
  Example Agent Configuration and Usage 
  Configuration
  Snmpv1 Vs. Snmpv2
  Submitting Bug Reports
  Closing
  Thanks

  * = Required Reading.

INTRODUCTION

  This package was originally based on the CMU 2.1.2.1 snmp code.  It
  has been greatly modified, restructured, enhanced and fixed.  It
  hardly looks the same at all as anything that CMU has ever released.
  However, it maintains all the original API functions for complete
  backwards compatibility.

SUPPORTED ARCHITECTURES

  Please see the FAQ for this information.

  Please let us know if you compile it on other OS versions and it
  works for you so we can add them to the above list.

  Porting:  Please! read the PORTING file.

AVAILABILITY

  ftp://ucd-snmp.ucdavis.edu:/ucd-snmp.README
  ftp://ucd-snmp.ucdavis.edu:/ucd-snmp.tar.gz

  Mirrors:

  Switzerland: ftp://sunsite.cnlab-switch.ch:/mirror/ucd-snmp
  Japan:       ftp://ftp.win.or.jp/pub/network/snmp/ucd-snmp
  Russia:      ftp://ftp.chg.ru/pub/networking/management/snmp/ucd-snmp

WEB PAGE

  http://ucd-snmp.ucdavis.edu.

  Make sure you check out the logo there, which is created using
  postcards submitted from various locations that make use of the
  ucd-snmp package.
  
INSTALLATION

  See the INSTALL file distributed with this package.

COPYING AND COPYRIGHTS
  
  See the COPYING file distributed with this package.

FREQUENTLY ASKED QUESTIONS

  See the FAQ file distributed with this package.

HELPING OUT

  This is a project worked on by people around the net.  We'd love
  your help, but please read the PORTING file first.  Also, subscribe
  to the ucd-snmp-coders list described below and mention what you're
  going to work on to make sure no one else is already doing so!

CODE UPDATE ANNOUNCEMENTS

  See the NEWS file and the ChangeLog file for details on what has
  changed between releases.

  We hate broadcasting announce messages to other mailing lists and
  newsgroups, so there is a mailing list set up to handle release
  announcements.  Any time we put new software out for ftp, we'll mail
  this fact to ucd-snmp-announce@ucd-snmp.ucdavis.edu, described
  below.

  We will post new announcements on a very infrequent basis to the
  other channels (the snmp mailing lists and comp.protocols.snmp), but
  only for major code revisions and not for bug-fix patches or small
  feature upgrades.

MAILING LISTS

  The lists:

    The following mailing lists have been created for your use:
  
      ucd-snmp-announce@ucd-snmp.ucdavis.edu  -- For announcements
         Subscribe to ucd-snmp-announce-request@ucd-snmp.ucdavis.edu
         
      ucd-snmp@ucd-snmp.ucdavis.edu           -- For usage discussions
         Subscribe to ucd-snmp-request@ucd-snmp.ucdavis.edu

      ucd-snmp-coders@ucd-snmp.ucdavis.edu    -- For development discussions
         Subscribe to ucd-snmp-coders-request@ucd-snmp.ucdavis.edu

      ucd-snmp-cvs@ucd-snmp.ucdavis.edu       -- For cvs update announcements
         Subscribe to ucd-snmp-cvs-request@ucd-snmp.ucdavis.edu

      ucd-snmp-bugs-mail@ucd-snmp.ucdavis.edu -- Where bug reports are sent.
         Subscribe to ucd-snmp-bugs-mail-request@ucd-snmp.ucdavis.edu

    The lists you definitely want to subscribe to is the
    ucd-snmp-announce@ucd-snmp.ucdavis.edu list and the
    ucd-snmp@ucd-snmp.ucdavis.edu list.

  Subscribing:
    
    To (un)subscribe any of the above lists, mail a note to the same
    address with -request appended to the list name with a subject
    line of "subscribe" or "unsubscribe".

    For example:   mailing a note to

          ucd-snmp-announce-request@ucd-snmp.ucdavis.edu

    with a subject line of "subscribe" will subscribe
    you to the announcement list.

  Archives:
    The archives for these mailing lists can be found at
    http://ucd-snmp.ucdavis.edu.

AGENT EXTENSIBILITY

  The agent that comes with this package is extensible through use of
  shell scripts and other methods.  See the configuration manual pages
  (snmpd.conf) and the EXAMPLE.conf file for details.

  You can also extend the agent by writing C code directly.  The agent
  is extremely modular in nature and you need only create new files,
  re-run configure and re-compile.  No modification of the distributed
  source files are necessary.  See the following files in the
  agent/mibgroup directory for details and examples: README,
  examples/wombat.c, examples/wombat.h, examples/example.c,
  examples/example.h.  Also, see the local/mib2c program and its
  README file for help in turning a textual mib description into a C
  code template.

  Note: This agent uses its own API for extensibility.  The IETF's
  agentx working group have developed a common API for subagent
  extensibility, which we are working on providing support for in our
  agent.

CONFIGURATION

  See the man/snmp.conf.5 manual page.

  For the agent, additionally see the man/snmpd.conf.5 manual page and
  the EXAMPLE.conf file mentioned above.

  For the snmptrapd, see the man/snmptrapd.conf.5 manual page.

EXAMPLE AGENT CONFIGURATION AND USAGE

  See the 'EXAMPLE.conf' file in the top level source directory (you
  must build the package for this file to be generated).  Do NOT look
  at the EXAMPLE.conf.def file.  It will only confuse you.

SUBMITTING BUG REPORTS

  Important: *Please* include what version of the ucd-snmp package you
  are using and what architecture(s) you're using, as well as detailed
  information about exactly what is wrong.

  To submit a bug report, ideally, you should use
  http://ucd-snmp.ucdavis.edu/ucd-snmp-bugs to do your submissions.
  Alternatively, submit your bug report to
  ucd-snmp-bugs@ucd-snmp.ucdavis.edu.  Both paths do end up at the
  same place, which is the above URL.  Through this URL you can track
  your bug report.

  Patches should be sent to the above email address as well.

  If you intend to submit a patch as well, please read the PORTING
  file before you do so.  Thanks!

  All discussions of general coding related questions take place on
  the ucd-snmp-coders list, however.

CLOSING

  We love patches.  Send some to us!  But before you do, please see
  the 'PORTING' file for information on helping us out with the
  process of integrating your patches (regardless of weather its a new 
  feature implementation or a new port).

  Also, We're interested if anyone actually uses/likes/hates/whatever
  this package...  Mail us a note and let us know what you think of it!

  Have fun and may it make your life easier,

    Wes Hardaker
    ucd-snmp-coders@ucd-snmp.ucdavis.edu

THANKS

  The following people have contributed various patches and
  improvements.  To them we owe our deepest thanks (and you do too!):

  Original Author & Project Leader:

    Wes Hardaker <wjhardaker@ucdavis.edu>

  Major Contributors:  (in no particular order)

    Dan A. Dickey <ddickey@transition.com>
    Dave Shield <D.T.Shield@csc.liv.ac.uk>
    Giovanni S. Marzot <gmarzot@baynetworks.com>
    Niels Baggesen <recnba@mediator.uni-c.dk>
    Simon Leinen <simon@limmat.switch.ch>
    David T. Perkins <dperkins@dsperkins.com>
    Mike Perik <mikep@crt.com>
    Sanjai Narain <narain@thumper.bellcore.com>
    francus@metsny.delphi.com
    Gary Palmer <gpalmer@freebsd.org>
    Marc G. Fournier <scrappy@ki.net>
    Gary A. Hayward <gah@bellcore.com>
    Jennifer Bray <jbray@origin-at.co.uk>
    Philip Guenther <guenther@gac.edu>
    Elwyn B Davies <edavies@origin-at.co.uk>
    Simon Burge <simonb@telstra.com.au>
    David Paul Zimmerman <dpz@apple.com>
    Alan Batie <batie@aahz.jf.intel.com>
    Michael Douglass <mikedoug@texas.net>
    Ted Rule <Ted_Rule@FLEXTECH.CO.UK>
    Craig Bevins <craigb@bitcom.net.au>
    Arther Hyun <arthur@psi.com>
    Cristian Estan <Cristian.Estan@net.utcluj.ro>
    Eugene Polovnikov <eugen@rd.zgik.zaporizhzhe.ua>
    Jakob Ellerstedt <jakob@dynarc.se>
    Michael Slifcak <mslifcak@iss.net>
    Jonas Olsson <jolsson@erv.ericsson.se>
    James H. Young <sysjhy@gsu.edu>
    Jeff Johnson <jbj@redhat.com>
    Markku Laukkanen <marlaukk@stybba.ntc.nokia.com>
    Derek Simkowiak <dereks@kd-dev.com>
    David F. Newman <dnewman@epnet.com>
    Nick Amato <naamato@merit.edu>
    Mike Baer <baerm@calweb.com>
    Patrick Lawrence <pjlawrence@ucdavis.edu>
    Russ Mundy <mundy@tislabs.com>
    Olafur Gudmundsson <ogud@tislabs.com>
    David Reeder <dreeder@tislabs.com>
    Ed Lewis <lewis@tislabs.com>
    Bill Babson <wbabson@tislabs.com>
    Chris Smith <csmith@platform.com>

  We've probably forgotten people on this list.  Let us know if you've
  contributed code and we've left you out.
