Vous êtes sur la page 1sur 90

AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Table Of Contents

INTRODUCTION........................................................................................................ 2
QUICK TOUR ............................................................................................................ 3
About AdventNet SNMP API ............................................................................................... 4
AdventNet SNMP API Experience....................................................................................... 7
AdventNet SNMP API Architecture.................................................................................... 12
What's New in This Release.............................................................................................. 14
Contacting AdventNet........................................................................................................ 15
Other AdventNet Products................................................................................................. 17
TECHNOLOGY OVERVIEW.................................................................................... 18
SNMP and MIB Basics ...................................................................................................... 19
SNMP Overview............................................................................................................................. 20
Versions of SNMP.......................................................................................................................... 24
SNMPv3 Overview......................................................................................................................... 26
MIB Overview................................................................................................................................. 29
EJB Technology and Application Servers.......................................................................... 31
RMI Technology................................................................................................................. 32
CORBA Technology .......................................................................................................... 33
XML Overview ................................................................................................................... 34
Database and JDBC Overview .......................................................................................... 35
HTTP Overview ................................................................................................................. 36
RELEASE NOTES ................................................................................................... 37
Release Features 4.0 to 4.0.4 ........................................................................................... 38
Release Features 3.3 to 4.0 .............................................................................................. 47
Release Features 3.2 to 3.3 .............................................................................................. 53
RELEASE FEATURES 2.0 TO 3.2 .......................................................................... 56
Known Issues and Limitations ........................................................................................... 75
INSTALLATION GUIDE........................................................................................... 77
System Requirements ....................................................................................................... 78
Installation and Setup ........................................................................................................ 80
Configuring Applications from Launcher............................................................................ 82
Update Manager ................................................................................................................ 84
Third-Party Software.......................................................................................................... 87
Package Structure ............................................................................................................. 88

AdventNet, Inc. 1
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Introduction
Welcome to AdventNet SNMP API, a comprehensive toolkit for rapid development of SNMP-based
management applications that are reliable, scalable, and independent of operating system. With well-
proven APIs enriched with customer experience and an integrated set of easy-to-use tools and
features, AdventNet SNMP API caters to the complete development life cycle of network element
management.

Network management developers can leverage AdventNet SNMP library to build standalone and
Web-based applications, embedded software components and distributed EJB, CORBA, and RMI
applications. The library provides many of the commonly used functions and components out-of-the-
box to make the development simpler.

The core of AdventNet SNMP API is a set of Java APIs that can be integrated in any typical Java
application. In addition, the APIs provide interfaces that enable deployment in distributed environment
through RMI, CORBA, and J2EE containers. Built using the best software design patterns and
optimized performance, it is a powerful suite to secure APIs to build cross-platform, real-time
application for monitoring and tracking the performance of network elements.

Quick Tour
Technology Overview
Release Notes
Installation Guide

AdventNet, Inc. 2
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Quick Tour

About AdventNet SNMP API


AdventNet SNMP API Experience
AdventNet SNMP API Architecture
What's New in This Release
Contacting AdventNet
Other AdventNet Products

This section gives you an overview of AdventNet SNMP API, its architecture, and the technologies on
which it is built. It also gives an overview of the features and the various modules of AdventNet SNMP
API.

AdventNet, Inc. 3
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

About AdventNet SNMP API

Target Market
Benefits
Key Features
Standard Compatibility

AdventNet SNMP API can be used for building management applications for delivering superior
solutions that are appropriate for specific needs in the spheres of Internet Infrastructure Management.
This API can be used and integrated into any programming infrastructure that might require network
management solution.

Target Market
AdventNet SNMP API is built to address the needs of the following:
Equipment Vendors and ISVs can build cross-platform device and network element
management applications. In addition, applications for performance monitoring, configuration,
and managing resources on the network can be developed easily.
Enterprises can build applications for measuring utilization and throughput monitoring and
deploy them in various ways.
Service Providers can develop applications for monitoring utilization and throughput besides
service availability and performance management.
Benefits
Cross-platform support - supports all major platforms, such as Solaris, Windows NT, and Linux with
a common code base.

Open standards - follows the current Internet and standard technologies, such as Java beans, HTTP,
RMI, CORBA, EJB, and JDBC. The key benefit of these technologies is the feature-rich, easy-to-use,
and developer-friendly API resulting in faster time to market and easier development of custom
network management solutions.

Customization - provides a rich set of Java interfaces to deliver a highly customizable solution.

Scalability - fundamentally designed as a multi-tier system, based on widely used Internet


technologies for highly scalable solutions. The latest release of AdventNet SNMP API provides EJB
support thus enabling building of distributed applications.

Flexibility - provides a hierarchy of Java library packages, which allow flexible selection of the level of
library support desired. Therefore, you can access the detailed SNMP information by using low-level
API, or choose higher-level Java Beans for simpler programming and additional functionality which
requires no dealing with the SNMP details.

Web-based network management - includes modules, such as SAS and HTTP which allow you to
manage your network on the Internet or even devices behind firewalls. The SAS APIs can also be
extended to add SSL support for secure management.

AdventNet, Inc. 4
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Conformance to standards - AdventNet SNMP API conforms to the following Internet RFC
specifications.
SNMPv1 - RFC 1155 and RFC 1157
SNMPv2c - RFC 1901 and RFC 1907
SNMPv3 - RFC 2571 and RFC 2572
SNMPv3 User Based Security Model (USM) - RFC 2574
SNMPv3 View Based Access Control Model (VACM) - RFC 2575
Coexistence between SNMPv1, SNMPv2c, SNMPv3 - RFC 2576
Notification Filtering and Proxy Forwarding - RFC 2573
Deployment Options - AdventNet SNMP API offers wide range of deployment options that suit the
market needs.
Distributed management applications
Standalone management applications
Web-based applications and applets
Embedded management applications
Key Features
Multi-lingual support: Complete support for SNMPv1, SNMPv2c and SNMPv3 .
SNMPv3 Security: Support for DES and 128 bit AES encryption.
Robust SMIv1 and SMIv2 MIB Parser: Seamlessly parses the MIB definitions from any OEM
vendor. Offers various flavors of parsing based on the MIB definitions.
MIB Loading: Option to load MIB definitions from a pre-compiled file, Serialized file or
Database to boost the performance.
IPv6 (Internet Protocol Version 6) support: Provides connectivity with IPv6 and IPv4 based
devices.
SNMP Broadcasting: Broadcasts snmp packets across the network to auto-discover snmp
devices in the network.
SNMP Beans: Provides high-level components such as, SnmpTarget, SnmpTable,
SnmpPoller, TrapReceiver for easy application development.
Database support - Provides scalability by storing MIB definitions and SNMPv3 configuration
data in any relational database such as, MySQL and Oracle.
MIB Browser: Tool for administering network and system components. Can be run as a
stand-alone application or invoked from a Web Browser.
Command line utilities: Perform SNMP operations such as, SNMP GET, SNMP GETNEXT,
SNMP SET, SNMP BULK, SNMP WALK, etc. on remote agents.
HTTP tunneling support for applets to talk to a network with firewall restrictions.
Enterprise Java Beans (EJB) support for developing scalable multi-tier network management
applications.
RMI and CORBA access to SNMP API for distributed computing support.
Complete internationalization of API and GUI components.

AdventNet, Inc. 5
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Standard Compatibility

Supported
S.No Standard/Technology Key Benefits
Version
SNMP is the most widely used management protocol
that defines the communication mechanism between
v1, v2c,
1. SNMP the managed entities and the management station, the
and v3
information model, and the security and access control
mechanisms for sharing management information.
RMI facilitates distributed computing so that distributed
2. Java RMI 1.0 applications with high scalability and performance
goals can be built.
Java Foundation Classes (JFC), a collection of
JDK 1.2,
3. JFC Widgets, facilitates building user interfaces that have a
1.3
platform-independent visual presentation.
XML facilitates an efficient data interchange between
applications by providing an extensible mechanism to
4. XML 1.1
describe the meaning and hierarchical structure of
data.
AdventNet SNMP API can be used to store data in any
standard RDBMS. Currently, it stores the data
contained in MIBs and the USM table into the
database.
1.1 and In case of MIBs, once a file is parsed and stored in a
5. JDBC
2.0 database, it can be accessed any time without parsing
it again. In case of USM, once discovery and timeSync
is performed for a user and the entry is added to the
database, the entry can be taken from the database
any time without performing discovery or timeSync.
CORBA facilitates distributed computing where
applications written in different CORBA-compliant
6. CORBA 1.2, 2.0
languages can talk to each other. A key feature of
CORBA is Interface Definition Language (IDL).
EJB, a part of the J2EE framework, has an
architecture for developing, deploying, and executing
7. EJB 1.1 applications in a distributed environment. Components
created based on the EJB architecture are scalable,
transactional, and multi-user secure.

AdventNet, Inc. 6
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

AdventNet SNMP API Experience


All SNMP management applications communicate with one or more SNMP agents to deliver their
functionality. Both the management application and the agent always conform to the SNMP, MIB, and
SMI specifications. Although the management applications are diverse in nature, they all share a
minimal common characteristics.

All the SNMP agents typically behave in a standard way - processing requests from the manager
applications and sending traps. SNMP agents on a network only differ in the various versions of the
SNMP they support, and the MIB or the managed objects they maintain. The SNMP management
applications communicate with the agents to retrieve and collect the necessary information.

The following are the various factors that need to be considered while developing a management
application.

Architecture of the Management Application


Deployment Options
Accessing the Data from the MIBs Supported by the Agent
Collecting Data from the Agent
Communicating with SNMP Agent
o Table Handling
o Polling
Displaying the Retrieved Data
Receiving Unsolicited Messages from the Agent
Version of SNMP to Be Supported

AdventNet, Inc. 7
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Architecture of the Management Application


SNMP API can be used with two-tier as well as three-tier management applications. In the two-tier
architecture, the management applications directly communicate with the agents. In the three-tier
architecture, the management applications communicate with the agents through a manager-server.
For building highly scalable management applications, three-tier architecture is the best option.

AdventNet SNMP API provides a wide choice of options in selecting the type of architecture the
management application needs. The Choosing the Application Architecture section discusses the
various types of network management applications and applets that can be developed using
AdventNet SNMP API.

Deployment Options
In today's distributed environment, applications should have a wide choice of deployment options.
Deployment of standalone applications is preferred for most environments, while applet deployment
might be needed for Web-based management of network entities.

Management applications developed using AdventNet SNMP API can be deployed in different
formats, such as applications, applets, and servers. Support for applets in AdventNet SNMP API is
provided by means of SNMP Applet Server (SAS). SAS enables communication between applets on
Java browsers, which do not permit socket access to any host other than the applet host.

The Deployment Instructions chapter explains the various deployment options available with the
AdventNet SNMP API.

Accessing the Data from the MIBs Supported by the Agent


The management applications typically request management data or properties from one or more
SNMP-enabled nodes. The application needs to know the names and types of objects in the managed
device. This is available in the Management Information Base (MIB) modules, which are usually
provided with the managed devices.

The data supported by the agent are available in the form of MIB files and the manager applications
make use of the information available in the MIB files while querying the agent. For example,
RFC1213-MIB, also known as MIB-II, is a MIB module that is supported by all SNMP agents on
TCP/IP-enabled devices. Apart from supporting MIB-II, each device has its own MIB, such as a printer
MIB, a modem MIB, or a switch MIB. These MIBs can be used to access the associated data with it.

Management applications should be able to


Load and unload MIB modules
Access the information on managed objects using MIB
Resolve the textual labels to numerical OIDs
Determine the type of data of the MIB object
Simple management applications normally make a request by manually loading the MIB file, entering
the OID, data type, and data value of the each variable binding. Advanced applications require
loading multiple MIBs, storing the MIBs, logging the management requests, and so on.

AdventNet SNMP API provides rich support for handling and manipulating MIBs. The MIB support
package of AdventNet SNMP API is designed to allow Java programs to take full advantage of the
information contained in the MIB files. The Using MIBs in Applications chapter discusses more on
MIB-related aspects while developing the SNMP management applications.

AdventNet, Inc. 8
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Collecting Data from the Agent


The SNMP management applications communicate with the agents to retrieve the data. Applications
normally retrieve the data by synchronous/asynchronous communication or by polling at regular
intervals.

The applications, while communicating through the synchronous mode, wait for the response of the
previous request before sending a new request. In the case of asynchronous mode, the manager
application can keep sending requests to the agent without waiting for the response. The responses
are retrieved using the callback mechanism.

Though using asynchronous mode appears to lead to improved performance, it can be used when the
manager application knows the OID of the object it has to query. The synchronous operation is
relevant while retrieving something like a tabular data, in which the instance of the OID to be queried
next is got from the response of the previous request.

AdventNet SNMP API has a comprehensive hierarchy of Java packages that allows a flexible
selection of the desired level of library support. The developer can access the detailed SNMP
information or choose higher-level Java Beans for simpler programming.

In the case of low-level APIs, the user has to handle all the resources including the low-level
resources, such as session, api, pdu, and miboperations. The disadvantage of this is the complexity
of the code to be written for developing a management application.

While using high-level API, the developers need not handle the low-level resources and they can use
the API methods of the beans package for all operations.

API Overview explains the architecture of the different modules available as part of the AdventNet
SNMP API distribution and their functions and features.

The data retrieving functions of the manager applications can be classified as follows:
Communicating with SNMP agent
Table handling
Polling
Communicating with SNMP Agent
Management applications normally retrieve the properties of the devices using SNMP GET,
GETNEXT, or GETBULK request to the OIDs. The request may be simply to check whether the node
is alive or to periodically retrieve the values of specific managed objects.

The sections Data Retrieval Operations and Data Altering Operations discuss how the applications
communicate with the agent to access the data and the various ways of accessing the data using the
SNMP protocol.

Table Handling
Most of the MIBs are designed to handle large data in the form of tables. Management
applications should be able to retrieve tables in a quick and efficient way. Intuitive table
handling GUIs should become part of the management applications.

Table Handling in Applications explains the various table-related operations that can be
performed using AdventNet SNMP API.

AdventNet, Inc. 9
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Polling
The retrieval of data for specific managed objects at periodic interval of time is called polling.
Polling is normally used to monitor data that may change over time. Repeated polling of data
is required when the object is a critical resource or when it is required to monitor the
performance.

Polling can be performed for one or more nodes. Polling is started by selecting the specific
node, the OID to be polled, the timeout-retry values, and the polling interval. The polling
interval is normally given in seconds or in minutes. The polling interval can be determined by
the size and the number of messages sent to each polling cycle, time taken by the agent to
respond, and so on. The application can be used to regularly poll the agent, watch for
threshold crossings, and take appropriate action based on the results.

Data Collection and Reporting discusses the polling features that are available in AdventNet
SNMP API.

Displaying the Retrieved Data


After the necessary data is collected from the agent, the management application has the option of
displaying the result in the form of UI or non-UI. In case of displaying the results in the form of UI, the
users have to build their own UI components.

AdventNet SNMP API comes with built-in UI components, such as LineGraph, BarGraph, TrapViewer,
SnmpTablePanel, and MibBrowser to display the data received from the device.

For displaying the results in non-UI format, the developers can choose high-level non-UI beans or
directly use the low-level API.

The advantage of using the high-level API is that the bean components perform the most common
functions, such as splitting the PDU in the case of large requests/responses, removing the error OIDs
from multi-varbind requests, returning the results for proper varbinds, retrieving table data, receiving
traps at specified ports, and so on.

Receiving Unsolicited Messages from the Agent


Traps are unsolicited messages sent from an SNMP agent to one or more SNMP management
applications. The generation of a trap by an agent indicates that some predefined event has occurred.
When the agent detects the occurrence, trap messages are generated and sent to specific trap
destinations.

Management applications running in these trap destinations receive the traps. Trigger actions can be
configured on receiving the trap. This could be a change in color, an alarm sound, a blinking LED, an
email alert, or a pager alert.

Applications should also allow the trap data to be logged to determine what kind of event caused the
agent to generate the trap. This is done by examining the data stored in the variable bindings of each
trap message. The varbinds may contain the identity and values of MIB variables that provide
information on the specific event.

Many trap messages do not contain any variable bindings. This is because there may be no data
associated with the event that triggered the generation of the trap, or the trap message itself conveys
the necessary information.

Receiving Unsolicited Messages discusses the trap-handling features that are available in AdventNet
SNMP API.

AdventNet, Inc. 10
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Version of SNMP to Be Supported


The management applications should be able to support all the SNMP versions, so that it can
communicate with diverse set of devices/systems. SNMPv1 and v2c versions are predominantly used
for monitoring and performance management. SNMPv3 with its enhanced security features can be
used for configuration, accounting, and fault management.

AdventNet SNMP API supports all three versions of SNMP. Applications have the flexibility of
selecting any desired versions.

AdventNet, Inc. 11
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

AdventNet SNMP API Architecture

High Level API


Low Level API
MIBs API
SAS API
Distributed API

AdventNet SNMP API is the most comprehensive development environment for building SNMP-based
management applications and applets. The API consists of hierarchy of Java packages that can be
used for developing Java-based and Web-based network management products and solutions.

The following image illustrates the organization of the SNMP API architecture.

High-Level API
The high-level API consists of UI and non-UI beans that can be used to build applications and applets
that incorporate the SNMP functions provided by the low-level API. These bean components can be
used in any Java Bean Builder or directly in the Java code and can be used in developing
management applications. The components are built using the functions provided by the low-level API
and MIBs API.

The UI beans can be used in developing management GUI applications. The beans provided in this
package have SNMP intelligence. This allows building more flexible applications, applets, and

AdventNet, Inc. 12
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

components. The non-UI beans form the backbone of the high-level API and the UI beans are built on
top of the non-UI beans.

Low-Level API
The low-level API implements the core functions of the protocol. It includes classes that facilitate
communication with peer SNMP entities and offer message security and privacy to applications and
applets. It also includes classes that can be used in management applets running in a browser. It
supports multilingual communication with devices.

The low-level API provides the reference implementation of USM and VACM for SNMPv3 entities.
It also offers protocol-independent communication framework for SAS communication, in which you
can plug in your transport protocol for SAS communication.

MIBs API
The MIBs API conveys the information about the data available on an SNMP agent. This API allows
Java programs to take full advantage of the information contained in MIB module files. It also
facilitates loading and unloading of MIBs in applications and applets, in addition to supporting a host
of functions that provide the properties of the managed object. The components are built using the
variable support functions provided by the low-level API.

SAS API
The SAS API provides support for the Java applets to get around the security restrictions of the
browsers. SAS allows the applet to send and receive SNMP packets to any managed device from the
applet host. The SAS server needs to be run with the Web server in which the applet resides.

Distributed API
The RMI API enables you to develop distributed computing applications and server-side applications
in Java, to perform SNMP operations. The advantage of the RMI API is that it allows a server to
perform the SNMP functions, while the clients only make the RMI calls to the server. The components
are built on the non-UI beans of the high-level API.

Like RMI API, CORBA APIs allow remote clients to ask a server to perform SNMP operations and
obtain the result. The components of CORBA API are built on the high-level API. The CORBA IDL file
for the SNMP is published as part of the AdventNet SNMP API package to convert it into any other
language mapping API and use it in the client application programs.

The EJB API enables the developers to build and deploy scalable applications that provide multitier
application server architecture, which in turn can support load balancing, failover, transactions, and
other high-end capabilities. It creates SNMP bean instances for protocol-specific functions, such as
accessing sockets, receiving traps, polling, and so on, as required.

AdventNet, Inc. 13
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

What's New in This Release


The following are the key features added in the AdventNet SNMP API 4.

Robust MIBs Support - The MIB support API is enhanced to handle different levels of parsing and
improved error reporting mechanisms. The different levels of parsing allow the users to configure the
strictness of the parser according to their requirement. The parsing of MIB file can be made
configurable to suit the application requirements. AdventNet SNMP API handles this by providing the
following set of parsing levels which facilitates to select the level of parsing required by the
applications.
Lenient
Normal
Serious
Critical
In addition to the above four levels, the API also supports the user-defined level which allows the
developers to define their own parsing level.

IPv6 Support - IP version 6 (IPv6) is a new version of the Internet Protocol, designed as the
successor to IP version 4 (IPv4). IPv6 support has been added to Java Networking in the JDK 1.4
release. With the AdventNet SNMP API 4 compatible with JDK 1.4, the API can now support IPv6 as
defined in the following (RFCs).
RFC2373: IPv6 Addressing Architecture
RFC2553: Basic Socket Interface Extensions for IPv6
RFC2732: Format for Literal IPv6 Addresses in URLs
Logging Support - AdventNet SNMP API supports logging of the SNMP requests. Using this feature,
applications can log the messages while querying for one or more variables from the remote agent.

AdventNet, Inc. 14
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Contacting AdventNet
AdventNet, the Internet Management Infrastructure Company is the leading provider of open,
scalable, extensible, and cross-platform management solutions for managing the Internet and e-
commerce infrastructure. AdventNet's solutions range in scope from optical and core internetworking
management systems, cable modem, DSL, storage, security management to e-commerce application
management. In each of these fast-growing markets, AdventNet is the leading provider of technology.

AdventNet is eager to hear your comments, feedback, and suggestions that would help improve our
products. We give you the contact information of our Corporate Headquarters, Sales, and Technical
support teams. We also provide the link to subscribe to the Java network management mailing list.

During the evaluation phase, AdventNet provides support "at no cost". This support includes email
access to our product specialists for problem resolution, clarifications in documentation, and technical
guidance. Feel free to send in your queries. We guarantee to respond as quickly as possible to make
your evaluation a success.

Corporate Headquarters

Web Site http://www.adventnet.com


AdventNet, Inc.
5200 Franklin Dr, Suite 115
Pleasanton, CA 94588 USA
AdventNet Headquarters
Phone : +1-925-924-9500
Fax : +1-925-924-9600
Email : info@adventnet.com
AdventNet Development Center (India) Private
Limited
Sree Narayana Complex
11 Sarathy Nagar
AdventNet Development Center
Velachery, Chennai 600 042 INDIA
Phone : +91-44-22431115
Fax : +91-44-22435327
Email : info@adventnet.com

Sales
For sales and product licensing inquiries, please use the contact information available in the following
URL.

http://www.adventnet.com/contact.html

You can also send email to sales@adventnet.com at the AdventNet Headquarters main switchboard
below.

Phone: +1-925-924-9500 and request for Sales


Fax: +1-925-924-9600

Technical Support
For support and bug-report, please mail to snmp-support@adventnet.com. For those with support
contracts, AdventNet provides priority support through email with a reply usually within 24 hours.
Please provide the following information while sending support mails.
Release version of the product (AdventNet SNMP API 4)
Operating System and version
JDK version

AdventNet, Inc. 15
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Stack traces, if any


Debug messages or hex dumps, if any
CLASSPATH environment variable, if applicable
Any other related information
This would help us provide faster responses to your query.

Feedback
We welcome your feedback that will help us improve the APIs and provide future enhancements.
Send your feedback to: snmp-support@adventnet.com.

AdventNet, Inc. 16
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Other AdventNet Products

EMS, NMS, Provisioning, and OSS Systems


Management APIs
Toolkit for Agent Development
Testing Tools

AdventNet provides a comprehensive range of network management products that can address all
the network and system management needs of your organization. The following is our comprehensive
portfolio of development tools. Visit our Web site for all the latest information on our products.

EMS, NMS, Provisioning, and OSS Systems


AdventNet Web NMS is a proven, standards-based, highly extensible framework with a strong set of
applications for delivering Element Management System (EMS) and Network Management System
(NMS) solutions. It includes comprehensive mediation to network elements, a broad set of northbound
OSS interfaces, and a powerful set of development tools. It provides out-of-the-box application
functions with tremendous flexibility to customize a variety of domain-specific needs.

Management APIs
AdventNet TL1 API comprises of a set of Java libraries for developers seeking to leverage the power
of Java and other Internet technologies in quickly delivering Java and Web-based solutions for
managing TL1 devices. It provides a good base to build network management products and solutions
for TL1 device management.

AdventNet CLI API consists of low-level, high-level, and distributed APIs. The low-level API consists
of Java classes that implement the core CLI functionality including the communication framework
enabling the user to access the CLI API. The high-level APIs make the development of network
management applications easier using the CLI libraries, where as the distributed functionality is
carried out by RMI API.

Toolkit for Agent Development


AdventNet Agent Java/JMX Edition is a rapid prototyping and development tool for building agents
based on Java Management Extensions - JMX framework with multiprotocol access to common
management instrumentation, including SNMP, HTML, RMI, HTTP, CORBA, and TL1. You just have
to instrument once to access any protocol.

AdventNet Agent toolkit - C Edition is a rapid prototyping and development tool for building ANSI C,
C++ based agents, best suited for device and System Management. The run-time agent is very
modular, portable, and customizable. The toolkit provides multiple protocol (SNMP, HTTP, TL1 and
other protocol) access to common instrumentation, called Multi-Protocol Agent (MPA).

Testing Tools
AdventNet Simulation Toolkit contains a powerful set of tools, which will help you simulate a network
with SNMP and TL1 devices. The new integrated Network Design tool enables you to create a
network and dynamically configure SNMP and TL1 devices in the network.

AdventNet SNMP Utilities contains cross-platform applications and applets for SNMP and Web-based
network management. These utilities enable device, element, application, and system management.

AdventNet, Inc. 17
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Technology Overview

SNMP and MIB Basics


EJB Technology and Application Servers
RMI Technology
CORBA Technology
XML Overview
Database and JDBC
HTTP Overview

This section gives you an overview of Java and SNMP basics including a write-up on SNMPv3. If you
are already familiar with Java development and SNMP, feel free to skip this chapter.

AdventNet, Inc. 18
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

SNMP and MIB Basics

SNMP Overview
Versions of SNMP
SNMPv3 Overview
MIB Overview

This section gives an overview of SNMP and MIB basics.

AdventNet, Inc. 19
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

SNMP Overview
A network provides ease of communication between computers. To use networks effectively, we need
a set of rules by which all the networks should abide. The set of rules is called protocols. Simple
Network Management Protocol (SNMP) is one among the various protocols that defines messages
related to network management.

In simple terms, SNMP is a primary protocol, used in the transfer of network management information
between two or more network entities or nodes.

Let us get to know more about SNMP and its features in the following sections.

Need for SNMP


Evolution
Advantages
Features
Basic Operations

Need for SNMP


Network Management is all about keeping the network up and running, monitoring, and controlling
network devices using conventional network technology. Local management and remote management
are the two ways of managing a device connected to a network. Local management demands for a
human manager where the managed object is situated. When the network devices are more and the
network is widespread, management becomes tedious and impossible. Therefore, there arises the
need to manage the network remotely. This is enhanced by SNMP.

Using SNMP, one workstation running one or more management software applications can monitor
management information collected by thousands of network devices. This information is used to
establish the functioning of the network and also to identify the problems in the network.

Evolution
The ARPANET was the first research network sponsored by the United States Department of Defense
(DOD), which connected many universities and government installations using leased telephone lines.
When satellite and radio networks were added, trouble brewed and to resolve it, TCP/IP came into
existence. This facilitated the connection of multiple networks in a seamless way. On Jan 1 1983,
TCP/IP became the only official protocol used by the DOD that marked a decline of the ARPANET. It
was then Internet came into existence.

Sometime in the mid-1980s, the growth of Internet was rapid, but there were no standardized network
management models. Later, the three models were formulated: the High-Level Entity Management
System (HEMS); the Common Management Information Protocol (CMIP) proposed by the Open
Systems Interconnection (OSI), a group of International Standards Organization (ISO); and the Simple
Gateway Monitoring Protocol (SGMP). CMIP over TCP was formed by the ISO as the actual network
management protocol to be used for the Internet. In February 1988, the then Internet Architecture
Board (IAB) convened an ad hoc committee to determine which of the three models should be used. It
was then decided that CMOT would be a natural choice. The SGMP was the short-term solution
before CMOT was distributed.

For an effective transition of systems from SGMP to CMOT, a common network management
framework had to be developed that would be used by both the models. This framework was named

AdventNet, Inc. 20
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

the Simple Network Management Protocol (SNMP). In April 1989, SNMP was promoted and given a
recommended status as the de facto TCP/IP network management framework by the IAB. By then,
there were problems between CMOT and SNMP, which led to their independent developments. In
May 1990, on reaching a consensus, IAB promoted SNMP as the standard network management
protocol and a framework recommended for use on Internet and on all TCP/IP networks.

Advantages
As the name goes, the protocol is quite simple because it is easy to understand and the agent
requires only minimal software. It is this simplicity that serves as a key reason for its widespread
acceptance, besides being the chief Internet standard for network management. Implementing SNMP
management in a networked device is far more straightforward than most other approaches to
network management.

Some of the benefits you derive on using SNMP are as follows.

Standardized protocol: SNMP is the standard network management protocol for TCP/IP networks.
Internet Protocols are open, nonproprietary standards developed through voluntary efforts by the
Internet community, so is the SNMP that is actively maintained and all future enhancements to SNMP
are based on existing protocol standards.

Universal acceptance: All major vendors support SNMP. All SNMP-managed devices use the same
type of management interface to support a common set of network management information.

Portability: SNMP is independent of operating system and programming language. The functional
design of SNMP is also portable and it defines a core set of operations that must function identically in
all devices that support SNMP.

Lightweight: SNMP facilitates the addition of management capability to a device without impacting
the operation of the device or its performance. SNMP management may be added to a network
device with very little increase in workload and demand on system resources.

Extendibility: SNMP is a core set of operations that remain the same on all managed devices. SNMP
has the capability of supporting any type of information on any type of device that may be part of any
type of computer network.

Widely deployed: SNMP is one of the most popular protocols in the protocol suite that every vendor
is aware of. This popularity serves as one dominant factor for its wide deployment by the vendors.

Features
The three major components of the SNMP that form an integral part of its foundation are the network
device, the agent and the manager.

Network device: A network device or the Managed Object is a part of the network that requires some
form of monitoring and management.

Agent: An agent is a mediator between the manager and the device. The agent resides inside the
network device. It collects the management information from the device and makes it available to the
manager. It is to be understood that an agent is a program that resides in the device and is not a
separate entity.

A typical agent:
Implements full SNMP protocol.
Stores and retrieves management information as defined in the MIB.
Collects and maintains information about its local environment.
Asynchronously signals an event to the manager .
Acts as a proxy for some non-SNMP manageable network node.

AdventNet, Inc. 21
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Manager: A manager or management system is a separate entity that manages the agents from a
remote place. This is typically a computer that is used to run one or more network management
systems. Consider an organization having its branches in different geographical locations.
Administration of all the computers present in different localities would be difficult. When the System
Administrators computer is installed with the manager and all other systems and devices across all
the offices are installed with the agent, management becomes easier. The administrator has to just
query the agent through its manger to know the functioning of the device.

A typical manager:
Implements the network management system.
Implements full SNMP protocol.
Queries agents, gets responses from agents, sets variables in agents, and acknowledges
asynchronous events from agents.
Communication Between the Manager and Agent: The communication between the manager and
the agent in the network is enabled by means of Protocol Data Units (PDUs). These PDUs allow the
manager to interact with the agent in the device. The extent of management possible depends on the
data available to the manager from the agent.

Before data can be transported across the network, it must be passed down the network mass and
encapsulated. PDUs are encapsulated in the User Datagram Protocol (UDP). UDP is a
connectionless transport protocol included in the TCP/IP suite and described in RFC 768.

The SNMP network management is composed of three parts to which both the management
applications and agents conform. They are:
The protocol, which defines the functioning of the basic operations of SNMP and the format
of the messages exchanged by management systems and agents.
Structure of Management Information (SMI), which is a set of rules used to specify the
format for defining managed objects or the devices that are accessed using SNMP.
Management Information Base (MIB) is a collection of definitions, which define the
properties of the managed object or the device.
The MIB modules and the SMI are expressed using a text-based data description notation called as
Abstract Syntax Notation One (ASN.1), which is an unambiguous description of data in an ASCII
text format. The MIB data is conveyed across a network using SNMP messages, which are encoded
using Basic Encoding Rules (BER). They are similar to SMI, but the messages are encoded in a
binary format. Both the ASN.1 and BER are essential for the implementation of SNMP.

Basic Operations
SNMP is a request-and-response protocol. The basic SNMP operations performed are categorized as
follows.
Retrieving data
Altering variables
Receiving unsolicited messages
Retrieving data: The manager sends a request to an agent to retrieve data by performing the
following operations.
GET: The GET operation is a request sent by the manager to the managed object. It is
performed to retrieve one or more values from the managed objects.
GETNEXT: This operation is similar to the GET operation. The significant difference is that
the GETNEXT operation retrieves the value of the next OID in the tree.
GETBULK: The GETBULK operation is used to retrieve voluminous data from large table.

AdventNet, Inc. 22
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Altering variables:At times,the manager might want to change the value of a variable.
SET: This operation is used by the managers to modify the value of the network device.
Receiving unsolicited messages: The agent, when faced by problems in the transmission of
message, responds to the manager by sending unsolicited messages by using the TRAP operation.

AdventNet, Inc. 23
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Versions of SNMP

Overview of Versions
SNMPv1 and SNMPv2c
SNMPv1 and SNMPv3
SNMPv1, SNMPv2c and SNMPv3

Internet Engineering Task Force (IETF) publishes documents that are called Requests For
Comments (RFCs). These documents specify standards, operational practices, opinions, humor, etc.
for the Internet protocol suite.

The different versions of SNMP are the SNMPv1, SNMPv2c, and SNMPv3. The following is a snippet
of each version and it is followed by a detailed comparative overview of the versions.

SNMPv1: This is the first version of the protocol, which is defined in RFCs 1155 and 1157.

SNMPv2c: This is the revised protocol, which includes enhancements of SNMPv1 in the areas of
protocol packet types, transport mappings, MIB structure elements but using the existing SNMPv1
administration structure ("community based" and hence SNMPv2c). It is defined in RFC 1901, RFC
1905, and RFC 1906.

SNMPv3: SNMPv3 defines the secure version of the SNMP. SNMPv3 also facilitates remote
configuration of the SNMP entities. It is defined by RFC 1905, RFC 1906, RFC 2571, RFC 2572, RFC
2574, and RFC 2575.

The AdventNet SNMP API distribution supports all the three versions of the SNMP. The
communication and MIB portions of the AdventNet SNMP API conform to the following Internet RFC
specifications.
SNMPv1 - RFC1155 and RFC1157
SNMPv2c - RFC1901 and RFC1907
SNMPv3 - RFC2571 and RFC2572
SNMPv3 USM - RFC2574
SNMPv3 VACM - RFC2575
Overview of SNMP Versions
SNMPv1 was the standard version of SNMP. The SNMPv2 was created as an update of SNMPv1
with several features. The key enhancements of SNMPv2 are focused on the SMI, Manager-to-
manager capability, and protocol operations. The SNMPv2c combined the community-based
approach of SNMPv1 with the protocol operation of SNMPv2 and omitted all SNMPv2 security
features. One notable deficiency in SNMP was the difficulty in monitoring networks, as opposed to
nodes on networks. A substantial functional enhancement to SNMP was achieved by the definition of
a set of standardized management objects referred to as the Remote Network Monitoring MIB (RMON
MIB) objects. Another major deficiency in SNMP was the complete lack of security facilities. The
development of SNMPv3 was based on the security issues. SNMPv3 defines two security-related
capabilities, namely USM and VACM.

AdventNet, Inc. 24
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

SNMPv1 and SNMPv2c


SNMPv2c provides several advantages over SNMPv1. SNMPv2c has expanded data types of 64-bit
counter. It calls for improved efficiency and performance by introducing the GETBULK operation.
Confirmed event notification is sought by the introduction of the Inform operator. Enhanced error
handling approach, improved sets, and a fine tuned Data Definition Language are some of the
advantages of SNMPv2c over the SNMPv1.

SNMPv1 and SNMPv3


The SNMPv1 framework distinguishes between application entities and protocol entities. In SNMPv3,
these are renamed as applications and engines respectively.

The SNMPv1 framework also introduces the concept of an authentication service supporting one or
more authentication schemes. In SNMPv3, the concept of an authentication service is expanded to
include other services, such as privacy.

The SNMPv1 framework introduces access control based on a concept called an SNMP MIB view.
The SNMPv3 framework specifies a fundamentally similar concept called view-based access control.

SNMPv1, SNMPv2c, and SNMPv3


Both the versions v1 and v2c lack the following security-related features.
Authentication
Privacy
Authorization and access control
Remote configuration and administration capabilities
SNMPv3 was formed mainly to address the deficiencies related to security and administration.

AdventNet, Inc. 25
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

SNMPv3 Overview

Comparative Overview of SNMPv3 with SNMPv1 and SNMPv2c


SNMPv3 Message Format

Due to lack of security with the use of SNMP, network administrators were using other means, such
as telnet for configuration, accounting, and fault management. SNMPv3 addresses issues related to
the large-scale deployment of SNMP, accounting, and fault management. Currently, SNMP is
predominantly used for monitoring and performance management. SNMPv3 defines a secure version
of SNMP and also facilitates remote configuration of the SNMP entities.
Primary Goals of SNMPv3
1. To verify that each received SNMP message has not been modified during its transmission
through the network.
2. To verify the identity of the user on whose behalf a received message claims to have been
generated.
3. To detect received messages that contain management information, whose time of
generation was not recent.
4. To assure that the contents of each received message are protected from disclosure.
Comparative Overview of SNMPv3 with SNMPv1 and SNMPv2c
SNMPv1 and SNMPv2c have a wide deployment base covering the following.
A platform-independent data definition syntax - A subset of ASN.1
A platform-independent data transfer notation - BER
Communication between the peer entities - SNMP communication protocol with message
formats, message types, etc.
o Message contains the SNMP version
o Message contains the community string which is used to provide some security
Guidelines for definition of management data - SMI
Management data definition repository - The MIB files
SNMPv3 provides a secure environment for the management of systems covering the following.
Identification of SNMP entities to facilitate communication only between known SNMP entities
- Each SNMP entity has an identifier called the SNMPEngineID, and SNMP communication is
possible only if an SNMP entity knows the identity of its peer. Traps and Notifications are
exceptions to this rule.
Support for security models - A security model may define the security policy within an
administrative domain or an intranet. SNMPv3 contains the specifications for USM.
Definition of security goals where the goals of message authentication service include
protection against the following.
o Modification of Information - Protection against some unauthorized SNMP entity
altering in-transit messages generated by an authorized principal.
o Masquerade - Protection against attempting management operations not authorized
for some principal by assuming the identity of another principal that has the
appropriate authorizations.

AdventNet, Inc. 26
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

o Message Stream Modification - Protection against messages getting maliciously re-


ordered, delayed, or replayed to effect unauthorized management operations.
o Disclosure - Protection against eavesdropping on the exchanges between SNMP
engines.
Specification for USM - USM consists of the general definition of the following communication
mechanisms available.
o Communication without authentication and privacy (NoAuthNoPriv).
o Communication with authentication and without privacy (AuthNoPriv).
o Communication with authentication and privacy (AuthPriv).
Definition of different authentication and privacy protocols - Currently, the MD5 and SHA
authentication protocols and the CBC_DES and CFB_AES_128 privacy protocols are
supported in the USM.
Definition of a discovery procedure - To find the SNMPEngineID of an SNMP entity for a
given transport address and transport endpoint address.
Definition of the time synchronization procedure - To facilitate authenticated communication
between the SNMP entities.
Definition of the SNMP framework MIB - To facilitate remote configuration and administration
of the SNMP entity.
Definition of the USM MIBs - To facilitate remote configuration and administration of the
security module.
Definition of the VACM MIBs - To facilitate remote configuration and administration of the
access control module.
The SNMPv3 focuses on two main aspects, namely security and administration. The security aspect
is addressed by offering both strong authentication and data encryption for privacy. The administration
aspect is focused on two parts, namely notification originators and proxy forwarders.

SNMPv3 defines two security-related capabilities, namely the USM and VACM. USM provides
authentication and privacy (encryption) functions and operates at the message level. VACM
determines whether a given principal is allowed access to a particular MIB object to perform specific
functions and operates at the PDU level.

SNMPv3 Message Format


The SNMPv3 message consists of the following fields.
1. msgVersion - This field contains the SNMP message version. A value 0 is an SNMPv1
message, 1 is an SNMPv2c message, 2 is an SNMPv2 message, and 3 is an SNMPv3
message. The value of message version is used to choose between the different message
processing models (SNMPv1, SNMPv2c, or SNMPv3) available in the SNMP engine/entity.

The following fields are part of the SNMPv3 message and are not available in the SNMPv1 or
SNMPv2c message.
2. msgID - This field contains the SNMP message identifier. This is the unique ID associated
with the message. The msgID field is different from the reqID field available in the PDU. It is
possible that a received PDU that is part of a message cannot be decoded due to security
parameters between the SNMP entities. The msgID is used to relate the request with a
response during a transaction.
3. msgMaxSize - This field gives the maximum size of the message which the requesting SNMP
entity can accept.
4. msgFlags - This field contains the message security level. The bit 0 of msgFlags indicates
whether a message is authenticated. The bit 1 indicates whether a message uses privacy.

AdventNet, Inc. 27
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

The bit 2 indicates whether a report PDU is expected for the message (in case the message
is dropped or a response cannot be generated).
5. msgSecurityModel - This field indicates the security model used to generate the message. It
has a value of 3 when USM is used.
6. msgEngineID - This field has the SNMPEngineID of the authoritative SNMP entity involved in
the transaction. When a request PDU is generated from an SNMP engine, the remote peer
(agent for Get request and manager for Trap request) is the authoritative SNMP entity.
7. msgEngineBoots - This field indicates the number of times the authoritative SNMP entity has
booted. This field is used in authenticated message to validate the timeliness of a message.
8. msgEngineTime - This field indicates the time since the authoritative SNMP entity has been
rebooted. This field is used in authenticated messages to validate the timeliness of a
message.
9. msgUserName - This field contains the principal who originated the request. The fields
msgUserName and the msgEngineID are used to locate the security data associated with the
message from the USM database. This security data is used to authenticate and process the
message.
10. msgSecurityParams - This field contains the security parameters that are security model
dependent. It contains the authentication parameters and the privacy parameters for USM.
For an AuthPriv message, the authentication parameter has the digest computed for the
message using the authentication protocol applicable for the USM entry and the privacy
parameter has the salt generated, while encrypting the message using the privacy protocol
applicable to the USM entry.
11. contextEngineID - Within an administrative domain, the contextEngineID uniquely identifies
an SNMP entity that may realize an instance of a context with a particular contextName.
12. contextName - A contextName is used to name a context. Each contextName must be unique
within an SNMP entity.
13. PDU - The SNMP PDU (Protocol Data Unit) is used for communication between the SNMP
entities. PDU encapsulates the SNMP request ID, error status, variable bindings, and so on.
There are different types of PDUs, such as GetRequest-PDU, GetNextRequest-PDU,
GetBulkRequest-PDU, Response-PDU, SetRequest-PDU, Trap-PDU, InformRequest-PDU,
SNMPv2-Trap-PDU, and Report-PDU. The exact format of the PDU depends on the type of
the PDU.

AdventNet, Inc. 28
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

MIB Overview
Management Information Bases (MIBs) are a collection of objects or definitions that define the
properties of the managed objects.

To enable the SNMP manager or management application to operate intelligently on the data
available on the managed device, the manager needs to know the names and types of objects in the
device. This is made possible by the MIB modules, which are specified in the MIB files usually
provided with managed devices.

It should be understood that MIB is only an abstraction of data and not a physical database or a
physically executable object.

The following sections are dealt with in detail in this topic:

Evolution
Object Identifiers
MIB Objects
Object Identifiers with Instance Indexes
SMI

Evolution
IAB recommended a two-pronged strategy for the development of Internet network management
standards. The SNMP was used in the short run and the use of OSI network management framework
was examined in the long run. On this basis, two documents were created, which defined the SMI and
MIB. The documents were framed to be compatible with both the SNMP and OSI network
management framework. In the short run, this strategy proved successful.

However, the report of the Second Ad Hoc Network Management Review Group stated that the
SNMP and OSI framework did not fulfill the exact requirements. Therefore, both were suspended
which in due course led to the drafting of MIB II.

MIB-I was the first version issued as RFC1156. MIB-II is a super set of MIB-I with some additional
objects and groups and is defined in RFC1213.

Object Identifiers
The SNMP manager or the management application uses a well-defined naming syntax to specify the
variables to the SNMP agent. Object names in this syntax are called Object Identifiers (Object IDs or
OIDs). OIDs are series of numbers that uniquely identify an object to an SNMP agent.

OIDs are arranged in a hierarchical, inverted tree structure. The OID tree begins with the root and
expands into branches. Each point in the OID tree is called a node and each node will have one or
more branches, or will terminate with a leaf node. The format of OID is a sequence of numbers with
dots in between. There are two roots for Object Identifiers, namely iso and ccit. iso starts with .1 and
ccit starts with .0. Most Object Identifiers start with .1.3.6.1, where 1=iso, 3=org, 6= dod, 1 = internet.
The internet subtree branches into mgmt and private.

To understand the concept of relative and absolute Object Identifiers, let us consider the AdventNet
Object Identifier .1.3.6.1.4.1.2162. It specifies the path from the root of the tree. The root does not
have a name or a number but the initial 1 in this OID is directly below root. This is called an absolute
OID. However, a path to the variable may be specified relative to some node in the OID tree. For

AdventNet, Inc. 29
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

example, 2.1.1.7 specifies the sysContact object in the system group, relative to the internet (.1.3.6.1)
node in the OID tree. This is called a relative OID.

MIB Objects
The internet subtree branches into mgmt and private. All the standard MIBs are under mgmt, while the
private MIBs are under the private.enterprises subtree.

The standard MIBs are those that have been approved by the IAB. Equipment and software vendors
define the private MIBs unilaterally. A branch within the private.enterprises subtree is allocated to
each vendor who registers for an enterprise Object Identifier. The distinction between the standard
and private MIBs is based on how the variables are defined.

The best example of a standard MIB is the RFC1213-MIB (also known as MIB-II). It is a MIB module
which is typically supported by all SNMP agents on TCP/IP-enabled devices or systems. This MIB file
contains a description of the object hierarchy on the managed device, as well as the Object ID,
syntax, and access privileges for each variable in the MIB.

To know more on RFC, visit http://www.rfc-editor.org/rfcfaq.

One key aspect of MIBs is that, only the types of objects on the managed device are specified by the
MIB and not the specific objects (or instances). For example, ifInOctets in RFC 1213-MIB specifies a
type of object, for number of input octets on an interface, but the specific objects or instances of that
type are specified as ifInOctets.1, ifInOctets.2, etc., depending on the number of interfaces. When
specifying an object to the SNMP agent, a proper Object ID, which includes the instance, needs to be
used by the manager. When not properly specified, the agent responds with a "No such variable"
error.

Object Identifier with Instance Indexes


To obtain values of objects from the agent, you need to specify the instance of the object. Appending
an instance index to the object identifier specifies the instance of an object. For example, the last 0 in:

.iso.3.dod.1.mgmt.mib-2.1.sysUpTime.0

is the instance index. An instance index of "0" (zero) specifies the first instance, "1" specifies the
second instance, and so on. Since sysUpTime is a scalar object, it has only one instance. Therefore,
an instance index of zero is always specified when retrieving the value of a scalar object. An instance
index higher than 0 can only be used in the case of columnar objects (in table), which can have
multiple instances.

SMI
Structure of Management Information (SMI) is a set of rules used to specify the format for defining
managed objects.

SMI describes the MIB naming tree that is used to identify managed objects and defines the branch of
the MIB tree where SNMP managed objects reside. The SMI does not define a managed object but
describes a format for defining a managed object.

The two versions of SMI are SMIv1 and SMIv2. SMIv1 is defined by RFC1155, RFC1212, and
RFC1215 and the SMIv2 is defined by RFC1902, RFC1903, and RFC1904.

SMIv1 is a backward compatible update of SMIv1. This means that it is possible to convert an SMIv2
MIB to SMIv1 except for objects whose data type is Counter64. But when it comes to converting
SMIv1 to SMIv2, there is no mechanical way of doing it because there is more information in the
SMIv2 than in SMIv1. Also, the SMIv2 format contains constructs to define requirement specifications
and implementation specifications, which do not form a part of the SMIv1.

AdventNet, Inc. 30
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

EJB Technology and Application Servers


Java and associated technologies are emerging as the most preferable way to build network
management solutions, for both the server-side and the client-side applications. The reason for this
growing trend is the ease with which the new technology is used, shortening the development cycles.
The growth of this industry is also making more and more tools available to network management
developers.

The growth of the Internet has given rise to many new technologies to serve the increasing demands
of the current generation of applications. Client-server has transformed into Web-based, multitier
architecture for more scalability and performance. Application servers are commonly used as a base
platform in building these multitier, Web-based applications. With the emergence of multitier
architecture, a number of high-end capabilities have been introduced by application server vendors,
including massive scalability, transaction support, database integration, load balancing, redundancy,
failover, and so on. Many of these capabilities have been through proprietary architecture, requiring
solutions to be developed for individual application servers.

Enterprise Java Beans standardize many of these technologies and allow applications developed for
EJB to be deployed in multiple application servers. These application servers conform to the EJB
standards, without requiring the development of specific application server. EJB has been initially
focused on building applications needing to support a large number of users, high availability, high
performance, and so on. By using and extending standard technologies, such as JDBC, JNDI, RMI,
and CORBA, the EJB standard provides a uniform way of building applications with these capabilities
without requiring the developer to implement these capabilities. The developer does not need to
implement persistence, transactions, clustering, failover, load balancing, etc. to provide these
capabilities.

The number of application servers supporting EJB is growing. Applications written to the standard
EJB specification can run in any of these application servers. Most of the differences that exist
between application servers supporting a specified version of the EJB specification are not API or
application related. The differences are often related to run-time deployment and configuration of the
application server EJBs.

EJB supports a high degree of control over applications and components at run time, or even after the
application development is complete. The biggest benefit of this is to allow deploying these
components in a scalable and flexible architecture, and support load balancing, etc.

There are two kinds of EJBs, namely session EJBs and entity EJBs. Session EJBs represent a client
in a multitier system, and perform actions directly in support of client applications. Entity EJBs
represent application data that is persistent in the database and is not specific to a client.

EJB Restrictions
To support the capabilities of the application server, including database persistence, transactions, and
clustering, it is necessary to restrict the capabilities of EJB components. This is to allow the EJB
server to manage the EJB and provide the high-end capabilities expected of the application server.
The restrictions limit the EJB from doing any of the following.
Managing or synchronizing threads
Accessing files or directories with the java.io package
Using AWT functionality to display information or to accept information from a keyboard
Listening on a socket, accepting connections on a socket, or using a socket for multicast
Setting a socket factory used by ServerSocket, Socket, or the stream handler factory used by
the URL class
Loading a native library
To support these restrictions, and get the high-end capabilities desired by the application, special
architecture is needed to support network management applications. AdventNet SNMP API is
designed to allow building components and applications that do not violate these restrictions.

AdventNet, Inc. 31
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

RMI Technology
Remote Method Invocation (RMI) is a Java technology in which an object running in Java Virtual
Machine (JVM) could be invoked from another object running in a different JVM. The technology
provides a remote access of objects in Java programming language.

The RMI technology consists of a server and a client. The server usually creates remote objects and
binds these objects to the rmiregistry allowing the objects to be accessed remotely. The client would
connect to the server and get one or more remote reference and then invoke the methods on the
remote objects. The RMI technology wraps the underlying communication and hence the developer
only needs to code the business logic, instead of worrying about the communication between the
client and the server.

Remote objects are objects that could be called across JVMs. An object becomes remote by
implementing a remote interface. The implemented remote interface should extend the
java.rmi.Remote interface and all the methods declared in the interface should throw the exception
java.rmi.RemoteException.

RMI passes a remote stub for a remote object. The stub, which acts as proxy for the remote object, is
the remote reference to the client in the client environment. The client invokes a method on the local
stub, which is responsible for carrying out the method call on the remote object. The stub for a remote
object implements the same set of remote interfaces that the remote object implements. Again, only
those methods defined in a remote interface are available to the client.

The stub and the skeleton are created by invoking the rmic compiler (available with the JDK package)
on the remote interface implementing classes.

Note: Use javac to compile the source files. Next, use the rmic compiler to create stubs
for the remote objects.

AdventNet, Inc. 32
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

CORBA Technology
Common Object Request Brokerage Architecture (CORBA) is an industry standard distributed object
model. A key feature of CORBA is the language-neutral Interface Definition Language (IDL) to specify
data types, attributes, operations, interfaces, and so on. The languages that are CORBA-compliant
should have their own IDL mapping to generate the source code for their respective languages.

Distributed objects have a server and the client. The server usually provides a remote interface and
the client calls the methods defined in the remote interface after receiving a remote interface handle.
CORBA also has a concept similar to the RMI technology. However, in RMI the remote objects are
available only for client applications written in Java language. On the other hand, in CORBA the
remote objects are available for any application written in a CORBA-compliant language. This is made
possible using the CORBA IDL.

A CORBA Object Request Broker (ORB) connects a client application with the objects it wishes to
use. Unlike traditional client/server technologies, the client application need not know where the object
resides. It needs to know only the object's name and the parameters that are used to send and
receive messages. ORB locates the object, routes the request, and returns the result.

AdventNet, Inc. 33
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

XML Overview
XML is a text-based markup language designed to define the content of a document. The data in the
document is identified using the XML tags in accordance with strict standards. XML defines a
standard format that allows the data to be defined, stored, displayed, processed, and exchanged
across platforms, languages, and applications.

There is no fixed set of tags. We can define our own tags. The tags, attributes, and element structure
provide information that can be used to interpret the meaning of content. This is a major advantage
over HTML or plain text in which context information is difficult to evaluate. This structured approach
makes it an ideal choice for e-business purposes.

XML uses a Document Type Definition (DTD) to describe the data and is free and extensible. XML is
basically designed to focus more on data rather than what the data is. XML is a cross-platform,
software and hardware-independent tool for transmitting information.

XML is a W3C standard endorsed by software industry market leaders. XML documents can also
contain any possible data type right from multimedia data (image, sound, and video) to active
components (Java applets and ActiveX).

AdventNet, Inc. 34
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Database and JDBC Overview


The JDBC API standardizes the access format between the client and the database, allowing the
client to connect, query, and process the results in a portable way. The advantage of the JDBC
standards is implementing the database features in the Java program using the JDBC API to
implement the same in another database. Thus the JDBC standards define a set of interfaces to give
access to client applications independent of the DBMS that is used to store the data.

Three basic data storage technologies are:


Object-Oriented Database Management System (OODBMS)
Relational Database Management System (RDBMS)
Object-Oriented Relational Database Management System (OORDBMS)
Object databases provide a true object paradigm from data store to client application which can be
used to store complex data.

In relational databases, the challenge lies in mapping the dynamic objects with the static data. For
developers with complex data modeling need, an object-relational database can provide the
advantages of an object database, while maintaining the ease of data access.

AdventNet, Inc. 35
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

HTTP Overview
HTTP stands for HyperText Transfer Protocol, the protocol used to deliver all resources on the World
Wide Web. HTTP defines how the messages are formatted and transmitted.

When a client requests some information (say, clicks on a hyperlink), the browser sends a request
message to the HTTP server for the requested objects. The server receives the requests and sends
the response message with the objects. However, the HTTP server maintains no information about
the clients, and if the client asks for the same object again, the server resends the object. Therefore,
HTTP is called a stateless protocol.

HTTP can use both nonpersistent connections and persistent connections. A nonpersistent
connection is the one that is closed after the server sends the requested object to the client. In other
words, the connection is used exactly for one request and one response.

With persistent connections, the server leaves the TCP connection open after sending responses and
hence the subsequent requests and responses between the same client and server can be sent. The
server closes the connection only when it is not used for a certain configurable amount of time. With
persistent connections, the performance is improved by 20%.

Nonpersistent connections are the default mode for HTTP/1.0 and persistent connections are the
default mode for HTTP/1.1.

AdventNet, Inc. 36
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Release Notes
This section is useful for the existing AdventNet SNMP API users who are migrating to
AdventNet SNMP API 4. New users of the AdventNet SNMP API product can skip this
section.

Release Features 4.0 to 4.0.4


Release Features 3.3 to 4.0
Release Features 3.2 to 3.3
Release Features 2.0 to 3.2
Known Issues and Limitations

This section gives the details of the features and bug fixes available with the product starting with the
Release 2.0 of the product till the current release. It also lists the various third-party software that are
bundled with this product, and other software to be used with the product, and the directories and files
that are distributed with the AdventNet SNMP API.

AdventNet, Inc. 37
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Release Features 4.0 to 4.0.4

Bug Fixes
o High Level API
o Low Level API
o MIBs API
Enhancements

Bug Fixes

High Level API


1. While adding rows to a table on the agent side (initially the table being empty) by
performing polling with SnmpTableModel, the table on the manager side was not
getting updated. This issue has been fixed.
2. Null Pointer Exception was thrown while instantiating MibBrowser when the applet
parameter was null. This issue has been fixed.
3. In the Trap Viewer, the trap count was incremented even for traps that were dropped
when the parser was loaded. This issue has been fixed.
4. Context Name not getting set in v3 mode for LineGraph and BarGraph. This issue
has been fixed.
5. Two or more instances of SnmpTarget are created and after performing some
operations when releaseResources() is called on all the SnmpTarget instances, the
getMibOperations() method returned null only for the last SnmpTarget instance
created. However, when invoked on other SnmpTarget instances, it did not return a
null value. This is not the correct behavior and this has been fixed.
6. Using snmpGetAllVariableBindings() method, if a request was sent to a table (present
at the end of the MIB file) in which the rows are not implemented, the SnmpTarget's
getErrorString() method returned a 'No Error' message instead of 'End of Mib file'.
Also, the GETNEXT requests were sent again even after the occurrence of the error.
These issues have been fixed.
7. Using snmpGetBulkVariableBindings() method if a request was sent to a table
(present at the end of the MIB file) in which rows are not implemented, the
SnmpTarget's getErrorString() method returned a 'No Error' message instead of 'End
of Mib file'. Also, the GETBULK request was sent again even after the occurrence of
the error. These issues have been fixed.
8. When setAttemptComplete() was enabled, the SNMP version being v3 and the
response from the agent contained NOT_IN_TIME_WINDOW error, the request was
running in an infinite loop. This issue has been fixed.
9. When setAttemptComplete() was enabled and the SNMP operation was GETBULK,
the request was running in an infinite loop. This has been fixed.
10. When setAttemptComplete() was enabled and the SNMP operation is GETBULK with
the Non Repeaters value set, the Non Repeaters value for each outgoing packet is
not set properly. This has been fixed.
11. While handling more than one result listeners, if the removal of the listeners is not in
the same order in which they were added, the message "Error: No such Listener
available" was printed. This issue has been fixed.

AdventNet, Inc. 38
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

12. While creating parser files for receiving v2c traps, the mandatory value SysUpTime
has now been made optional.
13. The public method getCompleteResponse() in SnmpTarget runs into infinite loop in
case of SNMPv3 if NOT_IN_TIME_WINDOW OID is present in response. This issue
is fixed now and the corresponding error string and error code are set.
14. The color of the trap defined in the trap parser was not displayed properly. This has
been fixed.
15. If the method snmpSetVariables() of SnmpTarget takes a zero-length argument, the
subsequent call to snmpSetVariable() method was throwing
ArrayIndexOutOfBoundsException. This has been fixed.
16. In tables where holes are present, the values are not retrieved properly in
SnmpTable. This issue has been fixed. Note that this issue has also been fixed in
SnmpTablePanel of MibBrowser.
17. While querying tables, if the agent returns all the column values except the index
column value, no row is displayed in SnmpTablePanel. This issue is fixed.
18. While querying Windows agent, an infinite looping occurs if setAttemptComplete() of
SnmpTarget is true, and any of the OID is invalid. This issue arises only in case of
SNMPv2c. This issue has been fixed.
19. In MibBrowser, while performing a GETBULK operation, if the end of MIB is reached,
the proper response varbinds that are received till "End of Mib View" message are not
displayed. This issue has been fixed.
20. In the Trap Details section, the node, entity, and source were displaying the
RemoteHost. This has been changed as Node and Source displaying the
RemoteHost, and Entity displaying the AgentAddress.
21. Dialogs in MibBrowser are made modal.
22. The error code and error string were not set if any of the v3 specific errors occur. This
issue has been fixed.
23. When a GETBULK request in sent to the agent, the getErrorIndex() always contains
the max repetition value even if the GETBULK is successful. This issue has been
fixed.
24. The callback was not getting invoked while performing v3 discovery and time sync.
This issue is fixed.
25. In asynchronous mode, if an entry is already added for agent in the same host and
port in a different security level and when the engineID was not specified, timesynch
will not be performed. This issue is fixed.
26. In SnmpTable panel, the set of values (values got by clicking the Next button) could
not be retrieved for a table containing a not accessible index. This issue is fixed.
27. The callback was not getting invoked while performing a v3 discovery and time sync.
This issue is fixed.
28. The time synchronization was not performed in case of asynchronous mode if an
entry is already added for the agent in the same host and port with a different security
level and the engineID was not specified. This issue is fixed.
29. While loading MIB file with multiple modules in Trap Parser, the traps/notifications
defined in those MIBs are not getting loaded. This issue is fixed.
30. When the agent is restarted, the Engine boots and Engine time was not getting
updated in a multi-threaded environment. This issue is fixed.
31. It takes a lot of time to invoke the applet while using internationalization. This issue is
fixed.

AdventNet, Inc. 39
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

32. When two targets instance are created with one taking applet in the constructor and
the other created using an empty constructor, both the instance uses the SAS server
for communication or communicated through UDP depending on the order of
creation. But, applet should communicate only through SAS and the other target
instance using UDP sockets. This issue is fixed.
33. In the HttpMibBrowser, traps are not received properly when more than one client is
connected. This issue has been fixed.
34. Previously we were not able to add an SNMP V3 user in the HttpMibBrowser. Now
this issue has been fixed.
35. In the HttpMibBrowser, traps are not received properly when more than one client is
connected. This issue has been fixed.
36. Previously we were not able to add an SNMP V3 user in the HttpMibBrowser. Now
this issue has been fixed.
37. The fix was made in the getInstance method of the RequestHandler class. The
getRow method of SnmpTable returned an extra row in a particular case. In order to
fix that a new if condition was included in the getInstance method of the
RequestHandler class.
38. This is regarding the close button in the MibDesription UI. When a MibDescription is
invoked separately apart from the MibBrowser, the UI appears properly. But the close
button in the UI does not work. This issue is fixed.
39. In the TrapBrowser UI the value of the generic trap is displayed as numbers like
(0,1,2,3,4,5). Now it is fixed and will be displayed in detail like
(coldStart,warmStart,....)
40. Previously while performing a Set operation, the variable creation was done directly,
but it is necessary to check whether the variable is created properly. This fix is done
and if the variable is not created properly a DataException error will be thrown.
41. New methods setPacketBufferSize(int) and getPacketBufferSize() are added in
SnmpServer to set and get the buffer size of the packet.
42. In TrapViewer if the varbind type is DateAndTime, the message is displayed in raw
bytes, this issue is fixed and also the relevant mib need to be loaded in MibBrowser
for displaying it in proper format.
43. Avoiding the unnecssary sleep in the SnmpRequestServer during response
despatching.
44. When the oid set is given with an extra dot "." at the end, the trailing dot will be
removed from the set OID
45. When the set OID is of syntax IPADDRESS and the value to be set is some unknown
host, then an improper error message is thrown. Now this is fixed and a Data
Exception "Error : Creating variable " will be thrown.
46. Fix for reflecting the community value from the MibBrowser into the Settings panel of
TableViewer.
47. Fixed the problem while getting the indices of a table of type MacAddress.
48. Fixed the problem in getErrorCodes on doing a multivarbind request.
49. Fixed the IllegalAccessError on accessing SasFileDialog.applet from
SasClientFunction.
50. Fixed to invoke the table Line graph / table Bar graph from SnmpTable of MibBrowser
Applet.
51. Fixed the exception on closing the SnmpTablePanel description window from
MibBrwoser Applet.
52. Fixed the ArrayIndexOutOfBounds Exception when getIndices() method is called in
empty table.

AdventNet, Inc. 40
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

53. Fixed the exception which arises while calling getRow() in SnmpTable.
54. Fix provided in SnmpRequestServer to notify the listener with the timeout events in
case of Discovery or TimeSynchronization failures.
55. Fix provided to view the table in table viewer of MibBrowser when the table contains
more than one not-accessible index .
Low Level API
1. Whenever an SnmpOID is created using an invalid OID, the API by default will print
"Invalid OID format" to the standard output. Now this print is removed.
2. The getUpTime() method of SnmpPDU will return the time value even in case of v2
traps and informs. That is, in case of V2Traps and informs, the method will get the
value from the first varbind.
3. The open method of SnmpSession is made to throw an SnmpException if it is called
for the second time.
4. When the localAddress and the localPort is specified in the SnmpSession, the
DatagramSocket is not opened in the specified local port. This issue is fixed.
5. When the SnmpSession, which is created using the localAddress, is closed, the
socket is not closed properly. This issue is fixed.
6. In USMUserEntry, while sending or receiving a SNMPv3 request, an unnecessary
DNS lookup is being done. This lookup is avoided now.
7. The init_v3_params() and init_v3_parameters() methods of USMUtils class will now
revert back to older authProtocol and authPassword, if the newly provided
authProtocol or authPassword is found to be invalid. This reverting back of values in
the USMUserEntry will take place only when the init_v3_params() or
init_v3_parameters() method is called for the second time for the same user with
different authProtocol or authPassword.
8. The method getHashTableEntry(String host, String port) of USMUserTable fails in
case of database. As an alternative, a new method getEntries(String host, int port)
has been provided in USMUserTable.
9. If the syncSend returns a response which contains a NOT_IN_TIME_WINDOWS
OID, a request will be now sent to get the correct response.
10. The performance of the method toString() in the class SnmpOID has been improved.
11. The decoded result String of GET BULK request PDU contains the Error Status and
Error Index field instead of Non-Repeaters and Max-Repetitions. This issue has been
fixed.
12. When a request PDU is sent without setting the clientID, the response will not be sent
to the callback method of the client which is registered via
addSnmpClientWithID(SnmpClient).
13. When an asynchronous discovery request is sent to an unknown port, the
SnmpEngineEntry will be deleted from the SnmpEngineTable.
14. While retrieving a table using HTTP MibBrowser, a timeout error is received
frequently. This issue has been fixed.
15. If the USM table is unregistered from SnmpAPI, the setV3DatabaseFlag method
throws a NullPointerException. This issue is fixed.
16. SnmpPDU's copy method does not copy the ProtocolOptions object. This has been
fixed and now the method will return a new PDU object with ProtocolOptions object
set.
17. Previously, we were handling the SMIv1 INTEGER with the range - 231 to 231 - 1. Now
it is made to handle the range - 263 to 263- 1.
18. Serialization of SNMPv3 PDU was not possible before. This has been fixed.

AdventNet, Inc. 41
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

19. The acknowledgement packets always have SNMP version set to v1 even when the
incoming notifications are SNMPv2c or SNMPv3 informs. This issue has been fixed.
20. The discovery report is not received when an SNMPv3 inform is sent as a discovery
request with an username other than "initial" and zero length String. This issue has
been fixed.
21. When agent A sends an inform and agent B sends a trap simultaneously, then the
inform acknowledgement was sent to B instead of A. This issue has been fixed.
22. If an IP address is sent as one of the varbinds with the Character Encoding set other
than the default one, then "Trying to allocate VERY BIG PDU" error is thrown. This
issue has been fixed.
23. If none of the SnmpClients' callback method returns true, then the response is not
added in the response list. This issue has been fixed now, by adding the response to
the response list.
24. When the method setOIDPrefix in the SnmpAPI class is called with "." as argument,
then ".0." is prepended to the OID instead of ".". This issue has been fixed now.
25. In case of TCP transport, when the server connection is lost, the receiver thread of
SnmpSession is not closed, which causes 100% CPU. This issue has been fixed.
26. When the method setOIDPrefix in the SnmpAPI class is called with "." as argument,
then ".0." is prepended to the OID instead of ".". This issue has been fixed now.
27. Previously, while performing the v3 related database operations, whenever the
connection fails, our api will not repair or replace the connection. Now whenever the
connection fails, we create a new connection.
28. Timesten Fix : Made a minor fix to support timesten database.
29. When invalid security model was given in SnmpTargetParamsTable, null pointer
exception was thrown. This issue has been fixed
30. An extra varbind(AgentAddress varbind) was added in the Trap if Target.Community
notification support was enabled. This issues has been fixed.
31. The counter usmstatsDecryptionError (.1.3.6.1.6.3.15.1.1.6) was not incremented
when decryption failure error occured. This issue has been fixed.
32. When entries in SnmpNoticationTable were modified at run time, Notifcations were
not sent as expected. This issue has been fixed.
33. When Agent received any SNMP packet with messegeID as zero, it returned the
response with some other messegeID. This issue has been fixed.
34. If noAuthnoPriv entry is added in the UserTable(v3ConfigTable), an unnecessary
timesynchronization request had been sent.This issue has been fixed.
35. V3 SNMP operations over TCP was not working. This issue has been fixed.
36. Fixed Memory leak issue on closing the SnmpAPI w.r.t snmpGroupTable.
37. Unwanted prints like "There is no serialized object" is commented.
38. Issue in storing the port (high-order-byte , low-order-byte swap ) is fixed .
39. Issue in creating the table VACMCONTEXTTABLE in FireBird database is fixed.
40. Fixed the issue to delete the entry in USMTABLE when timeSynchronization fails.
41. Fixed the issue in displaying the SnmpCounter32 value as positive number if the
leading bit is set to 1.
42. Fixed the issue in incrementing the EngineTime insync with the agent.

AdventNet, Inc. 42
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

MIBs API
1. When the MIB is loaded from the serialized MIB file and when the method
getMibNode(Vector) of MibModule is called with numbered OID String as the
argument, NullPointerException is thrown. This has been fixed.
2. While loading the MIBs using the method loadMibModule(Applet, URL), the primary
modules are searched in the specified location. Though the MIB path is specified and
the MIB is present in the specified location, while loading the imported modules, the
MIB is being searched in some other location and at last it finds the MIB in the
specified location resulting in performance problems. This issue has been fixed.
3. When getMibNode() is called, the first occurrence of the node is returned. Suppose if
a module imports a node, sometimes this method returns the node corresponding to
the imported module. But the node corresponding to the imported module does not
contain all information about the node. Therefore the node instance corresponding to
the parent module alone is returned.
4. If the syntax of the node is a Standard TC, the (syntax instanceof MibTC) was
returning false. This issue has been fixed.
5. If the primary module is present in one directory and the imported module is present
in another directory and if the filename and the module name of the imported module
are different, FileNotFoundException is thrown, when we try to load the primary
module even if setMibPath() of MibOperations class is called with these two
directories as argument. This issue has been fixed.
6. For some MIBs (for example P-BRIDGE-MIB extracted from RFC2674), the method
getRootNode() does not return the correct root resulting in incomplete MIB tree. This
issue has been fixed.
7. When the method setMibPath() in MibOperations is called with some directories as
argument and when we try to load a MIB which is located in some other directory not
specified in the setMibPath (by giving the full path of the MIB file) the
FileNotFoundException is thrown. This issue has been fixed.
8. If an OID which is not present in a MibModule is given as argument, the method
getMibNode() of MibModule class returns the available node present in this module
which matches a part of the OID given, instead of returning null. This issue has been
fixed.
9. Since the method getMibNode() of MibModule fails, the method translateToNames
also fails, as it uses the getMibNode() internally. This has been fixed.
10. The OutOfMemory Exception was thrown when we try to load a MIB which is in not in
same case as the file that is present in the directory. This issue is reproducible only in
Windows. This has been fixed.
11. The performance of the method getMibNode(SnmpOID) in MibOperations has been
improved.
12. In the method createVariableBinding(varName, indexes, value) of MibOperations, if
the first character of the argument varName is an alphabet and if second character is
a number, then IllegalArgumentException was thrown. This issue has been fixed.
13. After loading a MIB and unloading it, if the MIB file is loaded again, the
getMibNode(SnmpOID) of MibOperations returns null even for a valid node present in
this MIB.
14. Support for loading the MIBs through various protocols supported by java.net.URL
has been provided.
15. When an SnmpOID constructed with an invalid String is passed as an argument to
the method getMibNode(SnmpOID) of MibOperations, NullPointerException is
thrown. This issue has been fixed.

AdventNet, Inc. 43
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

16. The method getMibVersion() of MibModule returns true for an SMIv1 MIB if an SMIv2
MIB containing Standard TCs is loaded along with this SMIv1 MIB. This issue has
been fixed.
17. Loading MIBs from the archive (zip or jar) failed when the complied MIBs option is
used. This issue has been fixed.
18. The MIB file in the current directory is loaded even if the MIB is loaded with some
other path where the MIB is present. This issue has been fixed.
19. The space separated directory could not be set using the method setMibPath of
MibOperations. This issue has been fixed.
20. While adding a scalar node under an object identifier, NullPointerException is thrown.
This issue has been fixed.
21. While adding augments/external indices for a table, NullPointerException is thrown.
This issue has been fixed.
22. In a Multithreading environment, the method getNearestNode(SnmpOID) in the class
MibOperations sometimes doesn't returns the nearest node, but some other node
much higher in the tree. This issue has been fixed.
23. If the syntax of a node is OBJECT IDENTIFIER and if its DEFVAL clause contains the
value 'zeroDotZero', then the MIB tree is incomplete. This issue has been fixed.
24. The MIB loading performance has been improved especially in case of MIB files
which is larger in size.
25. Loading a MIB file with a imported module and the imported module is in a MIB as a
second module(Multi Modular MIB). Also the imported mib modules name and the
name of the file(MIB) in which it is present are different.
26. Fix for DecodeInsanceString method where the last Index is of type OBJECT
IDENTIFIER and is Implied. Previously Implied is not properly considered.
27. The method snmpGet in SnmpTarget returns incosistent result in threaded
environment. The method for any oid sometimes returns string formated oid (e.g
.iso.org. and numeric oid the other time.The fix is done by synchronizing the method
getNearestNode in MibOperations.
28. Issue in loading the .ser file. Previously .ser file gets loaded only when the
corresponding MIB is present in that location. Now the fix has been done to load .ser
file without the necessary mib file.
29. In the method getRange(String s), counter to increase the BITS value is corrected,
instead of loop counter.
30. Issue in loading the mib with .MIB extention is fixed.
31. Fix for loading the mib where the root mib and its imported mibs are from space
seperated directory from MibBrowserUI.
Enhancements
1. If the setTrapAuthEnable() method of SnmpTrapReceiver set to true, v1 and v2c traps will be
authenticated using the community strings. In addition, v3 traps will be authenticated. If set to
false, all the traps will be received irrespective of the value of the community.
2. A new method setCommunityAuthEnable(boolean) has been added in SnmpTrapReceiver to
enable or disable the authentication of community name, the default value being true.
3. A new method setV3AuthEnable(boolean) in SnmpTrapReceiver has been included to enable
or disable the authentication of V3 trap, the default value being true.
4. Two new methods isV3AuthEnabled() and isCommunityAuthEnabled() in SnmpTrapReceiver
have been included to verify the current status of the authentication.
5. Feature to enable and disable authentication of v3 traps and community name has been
provided in TrapViewer.

AdventNet, Inc. 44
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

6. A new method setMibPath(String) has been added for setting the MIB search path in
MibBrowser bean.
7. Facility to copy rows in SNMP table of MibBrowser has been provided.
8. While performing the parsing and validation of the MIB files, the default parsing level is
changed from NORMAL to LENIENT.
9. Two new static methods namely addUserError() and getUserErrorString() for handling user-
defined error codes have been added in each of the following classes: ErrorMessages,
SnmpTarget, and SnmpRequestServer.
10. New methods setSimpleDateFormat() and getSimpleDateFormat() have been included in the
SnmpSession class, to change the date format that is printed when debug is on. These
methods are also included in SnmpTarget and SnmpTrapReceiver.
11. If the engineID is known, the SNMPv3 discovery need not be done. For this purpose, a new
public method (init_v3_parameters) which accepts engineID as an extra argument has been
added in USMUtils. This will not perform the SNMPv3 discovery. In the SnmpPDU class, two
new public methods setEngineID() and getEngineID() have been added.
12. New methods setEngineID() and getEngineID() have been added in SnmpTarget to get and
set the v3 engine ID. The setEngineID() has been added in SnmpTablePanel for the same
purpose.
13. New constructors have been included in SnmpTarget, SnmpTable, and SnmpRequestServer
classes that take instances of SnmpSession and MibOperations as parameters.
14. Two public methods setBroadcastFeatureEnable(boolean) and isBroadcastFeatureEnable()
have been added in SnmpServer to enable/disable the broadcast feature.
15. Two public methods setBroadcastFeatureEnable(boolean) and isBroadcastFeatureEnable()
have been included in SnmpSession to enable/disable the broadcast feature.
16. A new method getPduErrorIndex() has been added in SnmpTarget to get the error index set
in the PDU.
17. A new method snmpSetVariableList(SnmpVar[]) has been added in SnmpTarget for setting a
list of values. This method will return the response of SnmpVarBind[] type.
18. A utility called GetSnmpReleaseVersion has been included to print the release version of the
product.
19. Detailed error messages are displayed in case of TimeSync failure while adding a v3 entry.
20. A new method getVariable(SnmpOID oid) has been added in SnmpPDU to get the variable
using the Object ID.
21. The total number of bytes is printed along with the packet dump.
22. The new method validateUser(boolean) of SnmpServer is used for enabling or disabling
validation of users while adding v3 entries. The isValidateUser() can be used to check if the
validation is enabled.
23. A new public method called timeSynchronize(SnmpSession, SnmpPDU) has been added in
USMUserEntry to do the time synchronization which throws Exception when any error occurs.
24. When init_v3_parameters() of USMUtils is called for a NO_AUTH_NO_PRIV user with the
boolean validateUser set to true, a request is sent to check if the user exists.
25. When init_v3_parameters() of USMUtils is called for an AUTH_PRIV user with the boolean
validateUser set to true, a request is sent to check the priv password.
26. Previously in MibBrowser, while adding NO_AUTH_NO_PRIV users in the USM table, the
entry is added even if the user does not exist. It has now been made to check if the user
exists. Also, while adding AUTH_PRIV users, the priv password is checked.
27. The create_v3_tables() of SnmpServer is now made to set the v3-specific error codes.

AdventNet, Inc. 45
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

28. A new constructor and a method has been added in the SnmpInt class to accept and return a
"long" value. This has support for 64-bit integer values for INTEGER data-type. This is mainly
for SNMPv1, because SNMPv2c/SNMPv3 has only 32-bit integer values.
29. A new method called getNumericValueAsString() has been added in the SnmpVar class. This
method will return the numeric data in the decimal form rather than in any other form. This will
ensure uniformity in obtaining the numeric data from SnmpVar class.
30. A new method called isOperationInProgress() is added in the MibBrowser class. This method
returns a boolean value, true if an operation (like GET, SET) is in progress and false if not.
31. The MIB loading performance has been improved especially in case of MIB files which is
larger in size.
32. Provided an option for the ServerSocket that can be bind to the specified local IP address in
the method init(Object[] params) of TcpServerTransportImpl.java. The local IP address can be
specified in params[5] in the input Object[] argument.
33. Provided an option for the SAServer to bind to the localAddress.
34. Provided an applet constructor in MibBrowser with boolean argument
(MibBrowser(applet,boolean)) to disable the JDBC parameters during initialization of the
settings panel.
35. An api method to get the NotificationType object by passing a trapOID as argument is
introduced in MibOperations. The method added is getNotificationType(SnmpOID trapOID), in
the class MibOperations.
36. New methods setTrafficClass(int) and getTrafficClass() are added in UDPProtocolOptions to
set and get the trafficClass in the DatagramSocket used for SNMP communication. This
feature can be used only with 1.4 and above JDK versions.
37. The option for privprotocol in the low-level example application are provided for the following
:
1. snmp
2. snmpgetnext
3. snmpbulk
4. snmpwalk
5. snmpset
38. New Feature added for loading mib file from applet with its import files in different directories.
39. Augment table support is included.
40. A new method deleteTableRow() is added in SnmpTable to throw DataException.
41. Option to enable / disable the debug option in rmiserver.SnmpFactoryImpl.class is given.
42. New method getTCList(SnmpOID) is added in MibOperations.class ,used to get all the
Textual Conventions for the given snmp oid drill down to the base level.
43. New methods setV3MsgMaxSize(int size) and getV3MsgMaxSize() are added in SnmpServer
class to set and get the maximum size of snmpmessage respectively.
44. CFB-AES-128 support is included in high level api .
45. In Snmp V3, support for IBM JCE (com.ibm.crypto.provider.IBMJCE) included.

AdventNet, Inc. 46
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Release Features 3.3 to 4.0


Changes from release 3.3 to 4.0
New Features added to this release

Robust MIBs Package


MibBrowser Enhancements
IPv6 Support
Logging Applications

In addition to the above major features, the following enhancements are added to this release.

High-Level API
1. End Of MibView error is shown while performing GETBULK request in SnmpTablePanel.
2. Support for plotting of values for Counter64 in LineGraph bean has been provided. The
method setResult(BigInteger) and setResult(int, BigInteger) has been added for plotting
Counter64 data type.
3. In SnmpTable, the startPollingTable() method can be directly called after invoking the
setTableOIDWoStart(String) method because the ObjectIDList is internally set.
4. Log.java, an implementation class for Log Interface is added in utils package.
Logging of debug messages.
Logging of decoded debug messages.
5. The setGlobalView(boolean) method has been added to MibTree to change the mode of
the MibTree.
6. Two new methods setTimeoutInMilliSec(int) and getTimeoutInMilliSec() has been added
to SnmpServer class to set and get the timeout values in milliseconds.
7. In LineGraphBean, the method setShowErrorMessages(boolean) has been added to
enable/disable error messages in the LineGraphBean and the method
getShowErrorMessage() has been added to get the status information of error messages.
8. New methods setExpandCollapseEnabled(boolean) and
isExpandCollapseEnabled() have been added in MibTree. The
setExpandCollapseEnabled(boolean) method is used to enable/disable Expand All and
Collapse All buttons.
9. In TrapViewer, the source field in trap details now shows the agent address if specified.
TrapViewer shows the number of traps and inform requests received. Also, feature for logging
traps has been provided.
10. In SnmpTarget of rmi and beans package, a new method getExceptionCode() has
been added. This method returns the exception code (NOSUCHOBJECTEXP,
NOSUCHINSTANCEEXP and ENDOFMIBVIEWEXP) if present in the varbind. In this case,
the getErrorCode() method returns zero.
11. In SnmpTarget of ejb package, the method releaseResources() has been added.
12. Two new methods addLineSeparator(int) and addButton(String, ImageIcon,String, int)
have been added to ToolBar.

AdventNet, Inc. 47
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

13. Two new methods addLogClient(LoggerProperties) and removeLogClient() have been


added to SnmpTarget and SnmpRequestServer.
14. The methods getModules() and getModuleNames() have been added to MibOperations in
the RMI package.
15. Complete broadcast feature has been provided.
16. The setReceiveBufferSize() method has been added in SnmpTarget, SnmpRequestServer,
and SnmpTrapReceiver classes.
Low-Level API (snmp2 package)
1. TimeStamp value is now be printed with debug messages.
2. Performance of the toString() method of SnmpOID has been enhanced.
3. In case of applets, performance of SNMP query (such as walk operation) has been enhanced.
4. For 'interPacketDelay', "retries packet" now has a high priority than the "actual request
packet" while sending.
5. A new TimeoutPolicy feature is added to enable adding your own timeout policy for the retry-
mechanism.
6. The TimeStamp value is printed when the request gets timed out or when a retry is sent. also,
the TimeStamp value will now be printed along with debug messages.
7. An additional method called toString(int) has been added in SnmpCounter64 class to get
the number in any radix.
8. The UDPProtocolOptions class has been added to the snmp2 package for SNMP
communication through UDP.
9. The SASProtocolOptions class has been added to the snmp2 package for SNMP
communications through SAS.
10. Database support has been provided for VACM tables.
11. Methods getOIDPrefix() and setOIDPrefix(SnmpOID) has been added to SnmpAPI to get
and set the standard OID prefix.
12. Methods getTransportProvider() and setTransportProvider(String) has been added to
SnmpSession to get and set the transport provider class name.
13. The method copyWithoutVarBinds() has been added to SnmpPDU to get a copy of this
PDU without copying the variable bindings.
14. Methods isBroadCastEnabled() and setBroadCastEnable(boolean) have been added to
SnmpPDU to specify whether the IP address is a broadcast one.
15. The method discoverSnmpEngineID(SnmpSession) has been added to SnmpEngineEntry
to perform discovery. This method throws exceptions and returns the discovered engineID as
a byte array.
16. The method discoverSnmpEngineID(SnmpSession, int, int) has been added to
SnmpEngineEntry to perform discovery. This method throws exceptions and returns the
discovered engineID as a byte array. In addition, timeout and retries value can be specified as
arguments.
17. Complete broadcast feature has been provided.
18. The USMUtils class is made to a single file. The other two versions namely jdk1.2_classes
and cryptix_classes are removed.
19. The methods setReceiveBufferSize() and getReceiveBufferSize() have been added in
UDPProtocolOptions class.

AdventNet, Inc. 48
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

MIBs API
1. The getImports() method in the MibModule class gives all the imported elements and the
modules.
2. The getImportedModules() method has been added to MibModule.
3. Proper error message is given, if the table row object contains the ACCESS values other than
'not-accessible'.
4. The MibParser is made lenient allowing both the uppercase and lowercase for all the macro
constructs except TEXTUAL-CONVENTION.
5. The classes ModuleIdentity , NotificationGroup , NotificationType ,
ModuleCompliance , ModuleComplianceModule , ObjectGroup , and
AgentCapabilities have been added.
6. Various parsing levels, such as LENIENT, NORMAL, SERIOUS, CRITICAL, and UserDefined
are provided to load the MIB file.
7. Printing data according to DISPLAY-HINT has been provided.
8. The methods getMibNode(int[]) , translateToNumbers(String) , and
translateToNames(String) of MibModule class can now accept any form of input.
9. In case of application, the MIB file can be of any name. It need not be same as the module
name.
Bug Fixes Done

High-Level API
1. Firing of unnecessary event in SnmpTable, during timeouts, has been fixed.
2. By default when a OID of counter type is set in the SnmpPoller, it gives a delta value
i.e. difference between the current and previous. However, the first value polled by
the poller is the absolute value and every subsequent value is the delta value. This
bug is fixed.
3. When an OID is dynamically set on to the SnmpPoller, the next value plotted is
returned as a negative value. This bug is fixed.
4. ContextName was not taken while plotting graph using the graph icon from
MibBrowser. This has been fixed.
5. There was a memory leak when addRequest() method of SnmpRequestServer class
was invoked continuously. This has been fixed.
6. While adding a row to a table using the addRow() method of the SnmpTable, in the
ObjectID list, the rowStatus column should be given as the first column. If the
rowStatus column is not the first column then the row will not get added. This problem
is fixed now. Now the rowStatus column can be any where in the oid list.
7. There was a memory leak in SnmpRequestServer class when used in applet mode.
This has been fixed.
8. When constructors with ProtocolOptions (which are used for sending requests and
receiving responses in TransportProvider mode) from SnmpTarget, SnmpTable, and
SnmpRequestServer class were invoked, requests were not sent and hence no
responses were received. This has been fixed.
Low-Level API
1. Problem with dynamic configuration of inter packet delay is fixed.
2. Creation of unnecessary object in SnmpAPI class, has been fixed.
3. When two different threads use the same SnmpSession to send requests, there was
a possibility that, the responses ( for the requests sent by these Threads ) reach the
undesired destination. The occurrence of this behavior is very rare. This has been
fixed.

AdventNet, Inc. 49
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

4. There was a problem in calling setSoTimeout() method of DatagramSocket. This was


not supported in real time environment like OSE DELTA which was using
PersonalJava-JDK1.1.6. This has been fixed.
5. There was 100% CPU usage when SnmpSession was closed in the case of TCP/IP.
This bug has been fixed.
6. If 'retries' and 'interPacketDelay' are greater than zero, then there is possibility that a
request may get "Timed out", even if the response arrives. In case of a synchronous
request it will return with a null pdu, but in case of asynchronous request, it will first
inform with a null pdu, followed by the actual response. This bug has been fixed.
7. In case of 'interPacketDelay', timeout will not be exponential. This issue is fixed.
8. In the SnmpAPI class, the java.sql.ResultSet instances which are created by
executing the method java.sql.Statement.executeQuery will not be closed. This bug is
fixed now by closing the same.
9. In Windows 2000, if a request is sent to an unreachable port, then a 100% CPU
usage will be resulted and no further packets will be received. This problem will be
seen only when the Java SecurityManager is installed. This bug is fixed.
10. The "genReqID" and "genMsgID" methods in SnmpAPI has been made
synchronized. This will avoid the creation of two request-ids with the same value.
11. The wait(0) is modified into wait(100) in SnmpSession. The reason is "wait(0)" is an
infinite time blocking call and will come out of this only when a notify call is made.
(Note: This fix will not work in JDK 1.2).
12. The NullPointerException in the "removeEntry" method of USMUserEntry class is
fixed.
13. The snmpInTraps and snmpOutTraps variables were not incremented when v2c and
v3 traps were received. This bug has been fixed.
14. While using callback thread, sometimes it leaves out certain responses, i.e the
response will be received and queued in the responseList, but it will not be dequeued
and sent to the callback method. The response will be dequeued only when another
request reaches the callback thread. This issue is fixed by changing the wait() to
wait(100) in the SnmpCallback class.
15. When the API thread dies out, the requests will not be monitored for timeouts and
hence the queue size will keep on increasing leading to a "OutOfMemory" error. This
issue is fixed.
16. NullPointerException thrown in SnmpSession's monitorRequests method is fixed.
17. If the interPacketDelay is set ( to a value greater than zero ) and if the request is sent
to an unreachable port ( from a Windows2000 machine ), then the packets will not be
sent. This issue is fixed.
18. Continuous opening and closing of new SnmpSession will create an "OutOfMemory"
error or "Too many files" error (in linux OS). This issue is fixed.
19. If the v3databaseFlag is set to true and no database connection is established, then,
a SNMPv3 request will make the system to hang and an "OutOfMemeory" error will
occur. This issue is fixed.
20. The init_v3_parameters() method of USMUtils class will throw an Exception when
NoAuthNoPriv query was made. This issue is fixed.
21. If the received message contains a community name which is greater than 64K, then
a "ArrayIndexOutOfBoundsException" will be thrown, and the receiver thread of
AdventNet Stack will crash. This issue is fixed.
22. If the received message contains a community field whose "length" field contains
value of the order of 2^30 ( this number should be greater than RAM ), then an
"OutOfMemoryError" will occur, which will crash the application. This issue is fixed.

AdventNet, Inc. 50
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

23. If the length of the community field is given as a negative number, then a
"NegativeArraySizeException" is thrown, crashing the receiver thread of AdventNet
SNMP API stack. This issue is fixed.
24. If any extra random bytes are added along with a valid SNMP message, then this
message is also decoded and recognized as a valid SNMP message. Actually these
type of messages should be dropped while receiving. This issue is fixed and now the
SNMP messages are handled properly.
25. While using database for SNMPv3 requests, doing a GET request for "someHost",
throws "Time Synchronization error may have occured" error. In the above process
first the USM entry is added using "localhost" as the host name, where "localhost"
and quot;someHost" are the same. This issue is fixed.
26. If the debug is enabled, then all the "auth-priv" SNMPv3 packet will be printed in the
decrypted form. Actually, the packets which are received from the network should be
printed in the encrypted form. This issue is fixed.
27. The getData method of SnmpPDU used to return the decrypted data in case of "auth-
priv" packets. This method will now return the encrypted data.
28. In case of SNMPv3 database, the close method of SnmpAPI does not close the api
thread properly. Hence this thread will not die and will be held in memory. This issue
is fixed.
29. The genReqID and genMsgID methods of SnmpAPI has been made to access the
same variable. This will make sure that no two request IDs will be same for a single
JVM. Earlier the above methods was accessing two different variables. This issue is
fixed now which will avoid the cross threading.
30. Whenever the received packets exceed a threshold level ( default value is 100 ),
there was a problem while de-queing the excess packets. These packets will
cummulatively increase and will lead to an "OutOfMemoryError". The objects which
got leaked, include SnmpPDU, Snmp3Message (if V3), ASN1Parser, USMUserEntry
(if V3), InetAddress and SnmpEngineEntry (if V3 ) . This issue has been fixed.
31. If the authPassword and privpassword is not specified in the call to init_v3_params
method USMUtils then the corresponding USMUserEntry is not updated with these
latest passwords and keys and the protocols. This behavior will be seen only when
the init_v3_params method is called for the second time for the same user, with a
lesser security level. This has been fixed.
MIBs API
1. In the OID definitions like {1 3 6 } where the first subOID is a number, the module will
not get resolved. This bug has been fixed.
2. In the OID definitions like {iso org(3) dod(6) 1 mgmt(2) ...} where a number occur as a
subID in the middle of namenumber subOID, NullPointerException is thrown. This
bug has been fixed.
3. In the TRAP-TYPE Construct, the ENTERPRISE field containing the OID value is not
allowed. This bug has been fixed.
4. Creation of unnecessary objects in the MibModule class has been fixed.
5. In database mode, importing TCs are not handled. This bug has been fixed.
6. When an error message is thrown while loading a mib, modifying the mib file is not
possible and the streams are not closed. This bug has been fixed.
7. The HTTP URL is not validated in the getModuleNameDefinition method. Hence, it
gave the filename instead of modulename. This bug has been fixed.
8. In the method encodeInstanceString() in MibOperations class, the length count is
added in front of the IMPLIED index. This bug is fixed.

AdventNet, Inc. 51
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

9. While loading MIB in the database mode, if the IMPORTS section in the MIB contains
the imported elements which are not used, then ArrayIndexOutOfBounds Exception
was thrown. This bug has been fixed.
10. Loading of Compiled MIB files is now made thread-safe.
11. While loading some of the MIBs, the nodes were found to be missing in the MibTree.
This problem is fixed now.
12. In the setMultipleRevision() method, if the imported module is present in the
multipleRevision, infinite loop occurs. This problem has been fixed.
13. Thread Safe problem in ACVariation class is fixed.
14. Improper handling of the TAddress syntax in the createVariable(String) method in the
LeafSyntax class is fixed.
15. The null value return for the ACCESS value of the imported node has been fixed.
16. The NullPointerException thrown in the getIndexes(MibOperations ) method in the
MibNode class is fixed.
17. The FileNotFoundException thrown while loading the mib file which contains multiple
modules and is placed in the space separated path, is fixed.
18. The ArrayIndexOutOfBoundException thrown in the getMibNode(Vector) method in
the MibModule class is fixed.
19. While setting 'false' in the setReadDesc(boolean flag) method (which restricts the
loading of .cds file), the getIndexes(MibOperations mibOps) method in the MibNode
class will return the empty vector instead of index nodes vector. This bug has been
fixed.
20. The ArrayIndexOutOfBoundException was thrown in the multi-threaded application
while invoking toString(SnmpOID oid) method in the MibOperations class. Now, this
method has been made thread-safe.
21. For the OBJECT-IDENTITY macro, the reference was same as the description. This
bug has been fixed.
22. In the OBJECT IDENTIFIER definition, if the suboid is a number, a temporary label is
created using this suboid. If two nodes are defined in such a way that their second
sub-oid (which is a number) is same, then the temporary label created is overwritten
and only one of the node exist in the OID list. This bug has been fixed.
23. For the index nodes with syntax OCTET-STRING and OBJECT IDENTIFIER, the
length value has to be prepended, unless it is defined IMPLIED. But if the OCTET
STRING has a SIZE clause, the size can be taken as the length value and the length
need not be prepended before the instance value. This condition is now handled.
24. When the DateAndTime value is given in the invalid format, it was throwing
IncompatibleClassChangeError instead of giving proper error messages. This bug
has been fixed.
25. If the OBJECTS clause is not present in the NOTIFICATION-TYPE macro while
loading MIBs using Compiled MIBs option, the description value is displayed as
empty string. This bug has been fixed.

AdventNet, Inc. 52
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Release Features 3.2 to 3.3

Changes from release 3.2 to 3.3


Low Level API (snmp2 package)
MIB Support API (mibs package)
High Level API (beans and ui package)
SAS API (sas package)
RMI API (rmi package)

Changes from release 3.2 to 3.3


New features added to this release

Internationalization support has been added. This allows applications and applets developed using
the AdventNet SNMP API to be deployed in various languages without any change in the code.

Support for co-existence, Notification filtering, and Proxy forwarding has been added in the low-
level API. These features confirm to the RFC specifications 2573 and 2576.

Logging feature has been added. This allows applications and applets to log the debug, error, and
result messages.

The other new features and enhancements that are added in this release are:

Low-Level API (snmp2 package)


1. setCharacterEncoding(java.lang.String) and getCharacterEncoding() methods have been
added to the SnmpAPI class for character encoding support.
2. New interface ConnectionListener has been added to the snmp2 package which contains
two methods namely processConnectionDown() and processConnectionUp(). This interface
lets the user know the status of the connection. If this interface is implemented, the
processConnectionDown() method is invoked when the socket at the remote end is closed.
3. Package com.adventnet.snmp.snmp2.security.community is added for the co-existence
support.
4. Methods related to co-existence support and notification filtering is added in the SnmpAPI and
SnmpSession classes.
5. Method addSNMPClientWithID(SnmpClient client) is added in the SnmpSession class. The
client ID returned by this method has to be set in the PDU while sending the request.
SnmpSession class calls this client 's callback method when it receives response.
6. Method removeSNMPClientWithID(int clientid) is added to the SnmpSession class. This
method is called when addSNMPClientWithID() method is used for registering client in
SnmpSession class. As argument, client has to pass the client ID that it is received while
registering addSNMPClientWithID() method.
7. Methods setClientID(int id) and getClientID() are added to the SnmpPDU class. These
methods are useful for identifying the client which sends the PDU.

AdventNet, Inc. 53
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

8. Method partialSet(SnmpPDU pdu) is added to the SnmpSession class. This method is


used for performing SNMP SET for valid OIDs only, while doing a multi-varbind SNMP SET
request.
9. The inter-packet delay feature has been added. To support this, two new methods have been
added to the SnmpSession class.
o setTimeToWait(int) - Sets the inter-packet delay time. The timeout value to be set for
the request should be taken care by the user. This method should be used only when
the underlying protocol is UDP.
o getTimeToWait() - Gets the inter-packet delay time set on this SnmpSession object.
MIB Support API (mibs package)
1. The zeroDotZero OID is added as the standard node. If the MIB file contains the zeroDotZero
OID in the DEFVAL field, it is added to the OID list.
2. Method getImports() is added to the MibModule class.
3. Method getTrapType() is added to the MibTrap class.
4. Methods isIndex() and getExternalIndices() are added to the MibNode class.
5. The setDatabaseName(byte) method is added to the MibOperations class.
6. While parsing the MIB files, the MACRO DEFINITION in the MIB file is ignored.
7. While parsing the MIB files, appropriate error messages are provided if an exception occurs.
High Level API (beans and ui package)
1. The getHoles() method is added to the SnmpTable bean. This is useful in handling the table
data which are not-implemented by the agent.
2. In the TrapViewer bean, method setTrapAuthEnable(boolean isAuth) has been added for
specifying whether traps should be authenticated while receiving SNMPv3 trap messages.
3. In the SnmpTablePanel bean, while displaying partial table columns, editing the columns are
made possible for enumerated data types.
4. Internationalization support is added to the MibBrowser.
5. Method addLogClient(LogInterface client) is added to the SnmpTarget, SnmpRequestServer,
and SnmpTrapReceiver beans to support the logging of messages.
6. In the SnmpTablePanel window of MibBrowser, option has been provided in the Settings
panel for changing the table OID which avoids instantiating multiple tables from MibBrowser.
7. In the SnmpTablePanel bean, option has been provided in the Settings panel for setting the
Max Repetitions value. By default, it is 5.
8. Support for external indices is provided in SnmpTablePanel for SMIv1 MIBs.
9. SasFileDialog has been enhanced to provide JFileChooser and filtering options. The
methods are:
setDirectory(String) - for current directory setting.
setFileExtension(String) - for setting filter for file extensions.
setFilterItems(Vector names, Vector extensions) - for setting the filter items in combo
box of SasFileDialog has been added.
10. If there are multiple instances of SnmpRequestServer sharing single instance of
SnmpSession, the callback of the respective client which sends the request is called. This
improves the performance of the SnmpRequestServer.
11. Methods getAbsoluteCounters() and setAbsoluteCounters(boolean absoluteCounters)
are added to the LineGraphBean. This is used to set the counter values to absolute or differ
between the successive counters.

AdventNet, Inc. 54
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

12. In the MibBrowser's MibTree, buttons are provided for expanding and collapsing the tree.
13. In the MibBrowser, MibNode description is enhanced to have more information about the
MibNode.
14. The methods setTimeToWait(int millisecs) and getTimeToWait() have been added to the
SnmpServer class to provide inter packet delay.
15. The setMibOperations(MibOperations mibOps) method has been added in the SnmpServer
class. This can be used when the user wants to use local MibOperations instead of the static
MibOperations shared by all beans. The same method has been added to the MibBrowser
class also.
16. Method getErrorIndex() has been added to the SnmpTarget class. This method returns the
error index corresponding to the error OID in the PDU.
SAS API (sas package)
1. A new method setPortFileName(String filename) has been added to the SAServer class.
This method enables the user to configure the filename for storing the port value in which the
SAServer has been added.
RMI API (rmi package)
1. Methods startPollingTable() , setObjectIDList() , and refreshTable() have been added to
the SnmpTable interface.
2. Method addLogClient(LogInterface client) is added to the SnmpTarget interface to support the
logging of messages.
3. Methods setAttemptComplete(), getAttemptComplete(), setVarBindCount(),
getVarBindCount() has been added to the SnmpTarget interface.

AdventNet, Inc. 55
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Release Features 2.0 to 3.2

Changes from release 3.1 to 3.2


Changes from release 3.0 to 3.1
Changes from release 2.2 to 3.0
Changes from release 2.1 to 2.2
Changes from release 2.0.1 to 2.1
Changes from release 2.0 to 2.0.1

Changes from release 3.1 to 3.2


New features added to this release
Database support for loading MIBs has been included in this release. Applications can now load MIB
files directly from any industry standard RDBMS. The loading of MIB files from database also gives
good performance improvement when compared to the loading of the normal MIB file, particularly if
the MIB files to be loaded are high in number. Refer Loading MIBs from Database for further details.

Support for saving SNMPv3 security parameters information in a database has been added in this
release. Applications can now store the security information in the database and use that for
accessing the devices. See Saving SNMPv3 User Information for more information.

The other new features and enhancements that are added in this release are as follows.

Low-Level API (snmp2 package)


1. Support for broadcast of SNMP messages is added to the SnmpSession class.
2. A new method getLocalAddress() is added in the TcpProtocolOptionsImpl class.
3. In SnmpSession class, partialSet() method has been added.
4. While using applets in SnmpSession class, deQueuing problem that occured has
been fixed.
5. The setSecLevelForTimeSync() method has been added to the SnmpSession
class for performing v3 time Sync with security level authPriv or authNoPriv for a
authPriv user.
6. The getSecLevelForTimeSync() method has been added to the SnmpSession class
for getting the security level that can be used for performing v3 time Sync for an
authPriv user.
7. A new class TransportUtil has been added to the management package. This
contains methods to write the contents to an HTML file. It also contains methods to
set the transport home directory.
8. The following methods are added to the USMUtils class in the
com.adventnet.snmp.snmp2.usm package.
public static void init_v3_parameters(String userName, int authProtocol,
String authPassword, String privPassword, String targetHost, int port,
SnmpSession session) throws SnmpException
public static void init_v3_params(String userName, int authProtocol, String
authPassword, String privPassword, String engineName, SnmpSession
session) throws SnmpException

AdventNet, Inc. 56
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

9. A new method getEngineName() has been added to SnmpEngineEntry. This


method can be used to get the engineName in the case of Independent Transport
Provider.
MIB Support API (mibs package)
10. A new method isImportedNode() is added to the MibNode class.
11. Support for TAddress TC is provided in LeafSyntax.
12. Support for MacAddress is provided in LeafSyntax.
13. The getImpliedNode() method is added to the MibNode class.
14. Method toByteString() has been added to the MibOperations class.
High-Level API (beans and ui package)
15. Support for broadcast of SNMP messages is provided in SnmpRequestServer.
16. In SnmpTable, the getIndices() method has been added.
17. In SnmpTable, the stopPollingTable() method has been added.
18. In LineGraphBean, the isTimeAvg() method has been added.
19. Method isEndOfTable() is added to the SnmpTableModel.
20. Methods setMenuFont(Font menuFont) and getMenuFont() methods have been
added to the MibBrowserBean to customize the menu font.
21. Added method setSecLevelForTimeSync() for doing v3 time Sync with security
level of authPriv or authNoPriv for an authPriv user in the SnmpServer class.
22. Added method getSecLevelForTimeSync() for getting the security level that is used
for doing v3 time Sync for an authPriv user.
23. Constructors added for SnmpTable class for independent protocol provider option
and a new SnmpSession with local port.
24. Methods addMouseListener() and removeMouseListener() have been added to
LineGraphBean , BarGraphBean , and GraphWrapper classes.
25. Methods getShowSeverityColumnColor() and setShowSeverityColumnColor() have
been added to TrapBrowser.
26. In the LineGraphBean methods, getLinecolors() and setLinecolors() have been
deprecated because it is not fully implemented and methods getLineColors() and
setLineColors() have been added.
27. Methods getMibPath() and setMibPath() have been added to SnmpTrapReceiver.
28. Constructors added for SnmpPoller class for independent protocol provider option.
29. Methods getIgnoreSpecificControlCodes() and setIgnoreSpecificControlCodes()
have been added to SnmpTarget bean.
30. Read Community field of MibBrowser has been changed to text field.
31. The Mibs loaded previously is stored and updated in the File menu at startup of the
MibBrowser application.
32. In the SnmpTablePanel bean supports SNMP table columns not implemented by the
agent.
33. The SnmpTablePanel bean now displays the number of rows along with the page
number.

AdventNet, Inc. 57
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

34. The following method is added to the SnmpTarget class.


public void removeV3HandShakeListener(V3HandShakeResultListener l)

35. The following method is added to the SnmpRequestServer class.


public void removeV3HandShakeListener(V3HandShakeResultListener l)
36. Method getTrapViewer() has been added to the MibBrowser that returns the last
TrapViewer instance of MibBrowser.
37. The following new methods have been added to the SnmpTarget class.
void setParams(String host,String port,String community,String mib,String oid)
void setParams(String host,String port,String community,String mib,String[] oidlist)
38. The following new methods have been added to the SnmpTable class.
void setTableOIDWoStart(String tableOID)
void setParams(String host,String mib,String tableOID)
void setCellValue(String tableOID,Object aValue, int rowIndex,int columnIndex)
Object getCellValue(String tableOID, int rowIndex, int columnIndex)
String[] getColumn(int columnIndex)
String[] getColumn(String columnName)
39. The method void setParams(String host,String mibs,String tableOID) has been
added to the TableBean class.
40. The following methods have been added to the SnmpTable class.
getNotAccessibleIndex() - to get the values for the not-accessible indices
getNotAccessibleIndexColumns() - To get the names of the not-accessible index
columns
41. The method getRow(String tableOID,String index) is added in the SnmpTable bean.
42. A method to setSettingsTitle(String title) to set the title of MibBrowser Settings Frame
has been added in MibBrowser bean.
RMI API (rmi package)
1. The following new methods have been added and implemented in the SnmpTable
interface. The methods are also implemented in the respective implementing classes.

setCellValue(String tableOID, Object aValue, int rowIndex, int columnIndex)


getCellValue(String tableOID, int rowIndex, int columnIndex)
getRow(String tableOID, String index)
getColumn(int columnIndex)
setParams(String host,String mib, String tableOID)
setTableOIDWoStart(String tableOID)
getColumn(String columnName)
getIndices()
addRow(boolean Status,String[] oidlist, String [] s)
deleteRow(String oid)
2. The following new methods have been added and implemented to the
SnmpTarget interface. The methods are also implemented in the respective
implementing classes.
setParams(String host, String port, String community, String mib, String oid)
setParams(String host, String port, String community, String mib,String[] oidlist)
3. The following new methods have been added in the SnmpRequestServer
interface. The methods are also implemented in the respective Implementing classes.
setParams(String host,String port,String community,String mib,String oid)
setParams(String host,String port,String community,String mib,String[] oidlist).

AdventNet, Inc. 58
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

4. In SnmpTable class, the following methods are added.


String[][] getNotAccessibleIndex() - To get the values for the not-accessible indices.
String[] getNotAccessibleIndexColumns() - To get the names of the not-accessible
index columns.
5. In the SnmpTarget and the SnmpRequestServer interfaces, the releaseResources()
method is added to release the resources in the respective instances of the
components.
CORBA API (corba package)
1. Two new methods stringMatrix getNotAccessibleIndex() and stringSeq
getNotAccessibleIndexColumns() are added to the corba.idl file.
2. The methods public String[][] getNotAccessibleIndex() and public String[]
getNotAccessibleIndexColumns() are implemented in the
com.adventnet.snmp.corba.SnmpTableImpl class.
Bug Fixes Done

Low Level API (snmp2 package)


1. For the SNMP requests sent, proper response was received. But after some time, a
series of "Request timed out" message was printed. This has been fixed.
MIB Support API (mibs package)
1. When a textual convention loop exists in a MIB, StackOverflowError was thrown.
Now, this is throws a ParseException.
2. Bug with getSize(), getMax(), and getMin() methods in LeafSyntax is fixed. Now it
returns appropriate value.
High-Level API (beans and ui package)
1. In SnmpTarget, NullPointerException has been fixed while generating trap.
2. Error: null has been fixed while invoking SnmpTablePanel in MibBrowser.
3. Memory issues for tables in MibBrowser have been fixed.
4. In the SnmpTablePanel bean, while adding a row to the table, the default values are
added to the columns to which the values are not given when the row status is
5(createAndWait). This is not the expected behavior. This is fixed and now the
request is made only for the OIDs with the values given.
5. Missing columns when column count is changed has been fixed.
6. JDK 1.3 issue for TableHeader has been fixed.
Changes from release 3.0 to 3.1
New Features added to this release

he AdventNet SNMP Release 3.1 supports Enterprise Java Beans (EJB) development of network
management applications. The SNMP-enabled applications developed using AdventNet SNMP
Release 3.1 can be deployed in application servers supporting EJB. This enables building and
deploying scalable applications which leverage the load-balancing, fail-over, transactions, scalability
of the multi-tier application server architecture that support a large number of users, and other high-
end capabilities. Apart from this, the other major new features that are added in this release are as
follows.

AdventNet, Inc. 59
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Low Level API (snmp2 package)


SNMP Transport Provider Framework
1. A new protocol-independent transport provider framework has been provided for
SNMP communication in which any transport protocol can be plugged in. This
essentially means that the user can use AdventNet SNMP over any transport
protocol, such as UDP/IP, TCP/IP, Serial link, and so on. This mechanism can also
be used by users requiring more security to run SNMP over SSL. UDP/IP is the
default protocol implementation with a reference implementation for TCP/IP also
provided.
2. The following interfaces are added for the SnmpTransport provider framework. Users
wanting to use their own protocols for transport communication should implement
these interfaces.
ProtocolOptions
SnmpTransportProvider
3. A new class SnmpTransportPacket has been included which consists of the details
of the parameters that are needed for the transport communication and the details of
the message data that is to be sent or received.
4. The following are the new TCP reference implementation classes which have been
added to the snmp2 package.
TcpProtocolOptionsImpl - implementation of the ProtocolOptions interface
TcpTransportImpl - implementation of the SnmpTransportProvider interface.
Others
5. Support for GNU compiler for Java or the GCJ compiler is included for the low-level
API.
6. Support to re-authenticate a received SNMPv3 Trap is included.

7. A new class SnmpBits has been included in the snmp2 package. This class can
be used to create and set values for variables with syntax BITS.
MIB Support API (mibs package)
1. Support for loading MIBs from a JAR file in an application is added.
2. Option provided for the user to specify the handling of specific control code
characters (new line, tab and carriage return) while printing them. Now, they can be
printed as what they imply or their hex values can be printed. The following methods
have been added to the MibOperations class.
void setIgnoreSpecificControlCodes(boolean)
boolean getIgnoreSpecificControlCodes()
3. LeafSyntax class has been modified to handle variables with syntax BITS.
SAS API (sas package)
Protocol-independent communication framework for SAS communication
1. A new protocol-independent communication framework is provided in which any
transport protocol can be plugged in for SAS communication. The following interfaces
are added. Users wishing to use any protocol provider must implement these
interfaces.
SessionTransportProvider
TransportProvider

AdventNet, Inc. 60
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

2. TCP is provided as the default protocol implementation with implementation for


HTTP.
3. Now applications can also use SAS to communicate with the server. They can use
the com.adventnet.snmp.snmp2.SASAppletStub API.
High level API (beans and ui package)
1. The SnmpTableModel bean has been included in AdventNetSnmp jar.
2. In SnmpTable, an option has been provided to view the selected columns of the
table. The column names can be specified by using the setObjectIDList() method
provided in this bean. The same method is also made available in the
SnmpTableModel and the TableBean.
3. SnmpTablePanel displays the hostname and querying can be done for different hosts
by changing the host name.
4. In SnmpTablePanel, an option for deleting rows using the Delete key has been
added.
5. SnmpTablePanel now shows the name of the table in the title bar.
6. The refreshTable() method has been added to SnmpTable.
7. Polling option has been provided in SnmpTablePanel.
8. The editHeader() method has been added to TableBean.
9. TrapParserCustomizer provides an option to create an empty trap parser file.
10. The UI of RowAddEditor, which is used to add rows to SnmpTablePanel, is enhanced
to include ScrollBar.
11. The following methods have been added to the SnmpTablePanel.
startPoll() - starts the polling
stopPoll() - stops the polling
12. Confirm Message is added for Unload Mib option in MibBrowser.

13. In the MibBrowser bean, the getMibOperations() method is added to get the
MibOperations instance owned by MibBrowser.
14. Option provided for the user to specify the handling of specific control code
characters (new line, tab, and carriage return) while printing them. Now, they can be
printed as what they imply or their hex values can also be printed out. The following
methods have been added to the SnmpServer class.
void setIgnoreSpecificControlCodes(boolean)
boolean getIgnoreSpecificControlCodes()
2. Two new methods setTargetHostNames() and getTargetHostNames() methods
are added to the MibBrowser bean.
3. A new method setCallbackthread(boolean) is added to the SnmpTrapReceiver
bean. If ti is enabled, the EventListener method is called from the callback thread
when the value is set to true. By default, it is disabled.
4. The Find Node option in MibBrowser supports Global view.
5. The SnmpTablePanel bean now displays non-accessible index columns.
6. The options set in the MibBrowser Settings dialog box have effect in the SnmpTable
panel.
7. MibBrowser can display partial table view.

AdventNet, Inc. 61
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

8. In the SnmpTable bean, an option of changing the number of column view has been
added.
9. In case of large tables, tables are frequently updated.
10. LineGraphBean is provided with an option to view the polled values. Methods
setPollDuration(int) and getPollDuration() are included so that the user can
specify the polling duration.
11. LineGraphBean is provided with an option to store the polled values. The method
setLogEnabled(boolean) is included to specify whether to store the polled values.
The method isLogEnabled() is included to check whether the option to store the
values is enabled.
12. In the LineGraphBean, methods setLogFileName(String filename) and
getLogFileName() are included for the user to specify the file name for the log.
13. Mibs Search Path option is included for beans. Methods setMibPath(String
searchpath) and getMibPath() are included in the SnmpServer so that before
loading MIBs the user can specify the search path to find the MIBs.
14. The Community or Context name is displayed based on the SNMP version.
15. The ErrorMessages class is enhanced. The ErrorCodes are made public. User can
see the class ErrorMessages for list of ErrorCodes. Methods getErrorCode() and
getErrorString() in the SnmpTarget bean can be used to get the errorCodes and
errorStrings respectively.
16. MibModule Customizer has the option to load multiple MIBs.
17. PropertySettingsBean is modified so that the user can specify the image and can
change the button font.
18. TrapBrowser now has buttons to add and delete the traps and to view the trap details.
Moreover, the user can right-click to get a popup menu to add and delete traps and to
view trap details.
19. In TableBean, methods setHost(), getHost(), getPort(), and setPort() are deprecated
and new methods setTargetHost(), getTargetHost(), getTargetPort(), and
setTargetPort() are added for uniformity.
20. Methods setAttemptComplete(boolean), getAttemptComplete(),
setVarBindCount(int), , and getVarBindCount() are added to the SnmpTarget
bean. This is used for PDU splitting. Setting the method to true enables the request
PDU to be split and sent to get the complete data . By default, it is disabled.
21. A new constructor is added to the RequestEvent class. This constructor takes in three
parameters: Object o, String[] objectidlist, SnmpVar[] vars. This is used only for SET
operations. This can be useful for performing SET operations without loading mibs.
22. In MibBrowser, a new feature to decode the SNMPv3 PDU is added.
23. In Snmp3Message class, a new constructor is added. This creates an
Snmp3Message object initialized with the given byte array and security provider.
24. In SnmpServer, a new method getSecurityProvider() is added which returns the
Security Provider.
25. New constructors are added for the SnmpTarget and SnmpTrapReceiver beans.
These constructors should be used for protocols other than UDP/IP.
26. A new method readPollDataFromFile(String filename) is added in the
LineGraphBean which is useful for plotting the stored polled values. User can specify
the file name containing the data.
27. In the MibTreeComponent, a new public method getStringObjectID() has been
added to get the object ID as String.

AdventNet, Inc. 62
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

28. The method async_create_v3_tables() has been added to SnmpServer to create


SNMPv3 tables using asynchronous SNMP operations.
29. TrapParserBean supports parsing based on the trap varbinds and agent address
apart from the Generic Trap, Specific Type, and Enterprise OID. TrapParser Editor UI
has been changed.
30. TrapParser button is removed from MibBrowser and it is moved to TrapBrowser as
ParserEditor.
31. TrapBrowser provides an option to load Trap Parser file.
32. In TrapParser Editor, the parser updations are written to the file only if user explicitly
saves it.
33. The following methods are added to the SnmpTable class.
addRow(boolean entryStatus, String[ ] oids, String[ ] values) - adds a row
deleteRow(String oid) - deletes a row
getRow(int index) - retrieves a row
Bug Fixes Done

Low-Level API (snmp2 package)


1. The SNMPv3 message uses the value of engineID in the contextID field if the
contextID parameter is not explicitly specified.
2. In case of agent side implementations, the agent responds to a request only when the
secLevel is less than the secLevel configured for that user.
3. A null pointer exception thrown in case of wrong DNS configuration has been fixed in
the SnmpSession class.
4. In ASN1Parser, decodeOID() method now decodes OIDs starting with values other
than .1.3.
MIB Support API (mibs package.)
1. Set operation for enumerated Integers fails because of a bug in LeafSyntax class.
This has been fixed now.
2. While loading multiple MIBs using a single command, some of the MIBs could not be
loaded. This has been fixed now.
3. A NullPointerException is thrown when a node is imported from a MIB file that is not
defined in the imported MIB. This has been fixed to throw a MibException.
4. Standard nodes are now automatically loaded without the user explicitly importing
them. The standard nodes are: org, dod, internet, directory, mgmt, experimental,
private, snmpv2, enterprises, mib-2, snmpDomains, snmpProxies, and snmpModules.
5. An ArrayIndexOutOfBounds exception is thrown when the index of the table was
MAC address. This has been fixed.
6. While adding a new row to a table which is indexed by the IMPLIED keyword, the
length of the index was also encoded. This has been fixed.
7. A NullPointerException is thrown while loading MIBs using the "file:" protocol. This is
due to a bug in the loadMibModule(String) method of the MibOperations class and
this has been fixed now.
8. A null value is returned while retrieving the name of the trap module. This is because
of the bug in the getModuleName() of the MibTrap class. This has been fixed.
9. There was a bug while parsing the node object which has BIT STRING syntax. This
has been fixed.
10. The MibNode class contains getObjects() method, which is used to get the OBJECT
clause names in OBJECT-GROUP, returns null vector. This has been fixed.

AdventNet, Inc. 63
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

SAS API (sas package)


1. SAServer throws a NullPointerException if creation of custom class instance fails.
This has been fixed.
High-Level API (beans and ui package)/p>
1. A NullPointerException is thrown because the reference to USMUserTable was null in
the method manage_v3_tables() of SnmpServer. This has been fixed.
2. ResultEvent.getErrorString now gives the SNMPv3 USMStats error, if any. Moreover,
the ResultEvent.isSuccess() returns the appropriate value.
3. ResultEvent.getRequestID now returns the MessageID in case of SNMPv3. Earlier, it
returned RequestID.
4. The GETBULK retrieval mode in SnmpTableBean in MibBrowser uses the default
data retrieval mode, GETNEXT, even if the selection is for GETBULK. This bug has
been fixed.
5. The delete row option in the SnmpTablePanel does not delete the selected row if the
sorting is done not according to the indices. This bug has been fixed now.
6. In the current release, SnmpTrapReceiver bean does not create SnmpAPI and
SnmpSession objects when it is constructed. They are created while setting the port
using setPort() method because a session is created for a unique port. However,
some properties are directly set on these objects and a NullPointerException is
thrown if they are set before invoking the setPort() method. Moreover, the properties
set to the SnmpTrapReceiver are set to the current session and they are not updated
to the new session created for a different port. These issues have been fixed now.
7. In MibBrowser, when scalar objects are added to the Multi-Varbind list, index value is
not appended. This bug is fixed now.
8. In the UI Table beans, while retrieving partial columns of the table, the option is not
available for Enumerated types. This bug has been fixed.
9. In the SnmpTablePanel, while refreshing and polling the table, an out of memory
error occurs. This bug has been fixed.
10. The message "Instantiated superpoller scheduler with 4 threads" which is printed
while instantiating SnmpPoller has been removed.
11. There was a bug in SnmpPoller due to which the event notification is sent twice for
each polling cycle. Now it gives event notification twice only for the first polling cycle
and is prevented in subsequent polling.
12. The SnmpTable and ClippedTable returns table columns by the first occurrence of
the Table Name rather than the MIB Module in which the table is defined. This has
been fixed.
13. In the MibBrowser, the Load dialog box closes when the warning dialog box is closed.
This has been fixed.
14. TrapParserBean parses the trap based on the enterprise OID, generic type, and
specific type that is specific to SNMPv1 trap. Therefore, SNMPv2c traps are not
parsed properly. This has been fixed.
15. The getErrorString() method in the SnmpTarget bean now gives the SNMPv3
USMStats errors, if any.
16. A device having virtual IP addresses responding with a different IP address than the
one to which it has been sent, has been fixed.
17. While adding a row to the table, set request is sent to the index OIDs. This has been
fixed.
18. The table handling API has been changed to allow the user to define the RowStatus
according to their requirements. Earlier, the API allowed the RowStatus be defined
only in the MIB as the last columnar value while defining a table.

AdventNet, Inc. 64
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

19. The MibBrowser bean does not enable or disable the GetBulk button, when the
SNMP version was set using the setSnmpVersion(int) method. This bug has been
fixed.
20. If the TrapBrowser columns are changed, exception is thrown by displayEvent()
method and addRow() method. This has been fixed.
21. LineGraphBean's x-axis label shows Time in Minutes. It is now changed to Time in
Seconds.
22. LineGraphBean hangs when the user selects AverageOverInterval and click the
restart button. This bug has been fixed.
23. Re-painting problem in LineGraphBean has been fixed.
24. While retrieving large tables, the table UIs do not display all the columns. This has
been fixed.
25. The SnmpPoller bean polls twice for each poll interval. This bug has been fixed.
26. In the LoadMib dialog box of MibBrowser, the warning message "Enter the file name
of MibModule" is displayed if the Load button is clicked without specifying the URL of
the MIB file. If the error dialog box is closed, the MibLoad dialog box is also closed.
This has been fixed.
Changes from release 2.2 to 3.0
The mibs package uses new MibParser which offers better performance. The key enhancement is
the option of loading MIB files as compiled MIB files. The loading of compiled MIB files gives good
performance improvement when compared to the loading of the normal MIB file.

This release of AdventNet SNMPv3 API provides an elegant way of implementing the security and
access controls. It includes the new security and access frameworks through which users can
implement their own message-level security and access control. Users can define and implement their
own security model and the access control model. The AdventNet SNMPv3 security classes provide a
default implementation and registration of the User-based Security Model (USM) and the View-based
Access Control Model (VACM) based on these frameworks.

Support for HTTP access is provided in this release. Therefore, the applets now have the choice of
selecting the protocol. By default, the applet uses SAS for communication. If the protocol is set to
HTTP, then the communication is through the servlet loaded in the web server.

Patch Manager, a utility for managing the patches is provided in this release.

New Features added to this release

Low-Level API (snmp2 package)


1. This release includes a new security and access framework through which users can
define and implement their own security model and the access control model.
2. Support for debug level in low-level API.
3. Support for logging debug statements to file in low-level API.
4. hashCode and equals method are provided for SnmpOID class.
5. In the 2.2 release support for SnmpGroup , counters were provided only for those
defined in RFC1213-MIB. In the 3.0 release, the additional SnmpGroup counters
defined in RFC1907 are supported.
6. The method isAuthenticationFailed() has been added to Snmp3Message class
which returns the success or failure result of the Snmpv3 authentication module that
checks the digest and timeliness.

AdventNet, Inc. 65
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

7. Support is provided to make SnmpEngineBoots, SnmpAPI persistent. This is useful


for an agent side implementation. The following methods are provided in the
SnmpAPI.
public void setEngineBootsSerializeFileName(String name)
public String GetEngineBootsSerializeFileName()
public boolean serializeEngineBoots()
public boolean deSerializeEngineBoots()
8. The method getVersionString() has been added to SnmpAPI to get the release
version of the SNMP library.
9. The method getSnmpClients() has been added to SnmpSession which returns the
clients that have registered for callbacks.
10. Added support for sending/disable sending automatic response to the received inform
request through two public API methods in SnmpSession namely,
setAutoInformResponse(boolean flag) and isSetAutoInformResponse() .
MIBs Package
11. Performance improvement in the MibParser is achieved by providing the option of
loading MIB files as the compiled MIB files.
12. The MibParser now supports loading of Multiple Mib Modules from the same MIB file.
13. Cyclic imports are supported by the MibParser.
14. Forward reference of MibNode is supported in the current MibParser.
15. Multiple roots are supported with the current parser (cross iso ccitt mibs).
16. Support for dateAndTime TC is provided in mibs package.
High-Level API (beans and ui packages)
1. Inform request is fully supported.
2. External Index support for table is added.
3. Support for entry status is added.
4. GETBULK support for retrieving tables is provided.
5. Provision is made for displaying graph for multiple OIDs in LineGraphBean .
6. Methods setMaxNumRows() and getMaxNumRows() are added to SnmpTarget
bean to set the maximum number of rows that can be processed. By default, it is set
to 1000. This can be used when the number of rows of the table to be queried
exceeds 1000.
7. Add, Delete and Graph buttons are provided with SnmpTablePanel bean.
8. Graphing multiple column instances of SNMP Table is supported by the
SnmpTablePanel bean.
9. TrapBrowser bean can receive traps by listening on multiple ports.
10. TrapViewer bean is added. It can be directly used to receive, parse, and show the
parsed traps. It combines SnmpTrapReceiver, TrapParser, and TrapBrowser beans
into a single bean.
11. MibTree shows index and external index for the tables using special images.
12. The dialog box for line graph in SnmpTablePanel of MibBrowser is made similar to
the dialog box displayed for scalar values.
13. New method getErrorCode() is provided in SnmpTarget which returns the actual
error messages returned by the low-level api, if any. This returns an integer. If the
error is due to the high-level API, the return value of this is same as that of

AdventNet, Inc. 66
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

getErrorString(). Use the static method getErrorString(int index) of ErrorMessages to


get the corresponding error message.
14. The method getHostAddress(String) is added to SnmpServer class to return the
IP address for the given host name.
15. The method getNotificationDefinition() is added to the TrapEvent class to get the
details of the notification received.
16. Method setPollInterval() and getPollInterval() are added to the TableBean
class to set and get the poll interval for the table.
17. With the current release, the methods isTrapAuthEnable() and
setTrapAuthEnable() are added to SnmpTrapReceiver for v3 trap authentication. If
the TrapAuthEnable flag is set, the stack drops a v3 packet if authentication fails.
Otherwise, a TrapEvent is generated.
18. The method releaseResources() has been added to SnmpServer and
SnmpTrapReceiver. If SnmpTarget, SnmpRequestServer, SnmpTrapReceiver bean
instances are not used by an application, this method can be used to release the
resources, such as SnmpSession thread, SnmpAPI thread, etc.
MibBrowser Application
1. The Find option is added in the MibBrowser application to search a MIB node from
the MibTree.
2. SNMPDecoder utility for decoding v1 and v2c PDU HEX dumps is provided in the
Debug window of the MibBrowser.
3. Logging feature is provided, which can log MibBrowser result display, Debug
messages and SNMPDecoder messages.
4. The Print option is provided to print the SNMP operations results, debug messages,
and SNMP Decoder messages.
5. TrapParserCustomizer is added to the MibBrowser to edit the trap parser file.
6. Delete option is provided to delete the trap messages from the TrapBrowser.
7. TrapBrowser bean's status is shown with a LED panel and status panel.
Applet Support API
1. HTTP tunneling support for the applets is provided, which enables the applet client
that is part of a network with firewall restrictions to talk to other hosts.
2. Jetty HTTP web-server is bundled along with the API instead of ACME web-server.

Bug fixes done

Low-Level API (snmp2 package)


1. For SNMPv3 manager applications, some of the report PDUs are not generated. This
bug has been fixed.
2. For agent side implementations, if the value of requestID/messageID in the request
message is zero, the agent generates the response message with a non-zero
requestID/messageID value. Therefore, the manager drops the response message.
This has been fixed.
3. SnmpSession gives a null pointer exception if an Snmp Entity returns a PDU with an
ASN.1 serialization error. This has been fixed.
4. The Snmp callback client is not called in case of timeout. This has been fixed.
5. Bugs in the snmpv3trap and snmpv3trapd examples, which are available in the
snmpapps and mibapps directories, have been fixed.

AdventNet, Inc. 67
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

6. SnmpCounter64 data type is implemented using long data type to handle up to 2^63-
1. Now, it can handle up to 2^64 by using java.math.BigInteger data type.
7. Bug in encoding and decoding SnmpCounter64 data has been fixed.
8. When setRemoteHost() method in the SnmpPDU class is invoked second time on an
already constructed PDU, the remote host is still set to the first remote host and the
PDU was sent again to the first host. This has been fixed.
9. The getIncrement() method in the SnmpCounter64 returns proper difference
(including counter rollover).
10. Bug in re-using the PDU is fixed.
11. If the received SNMP packet resulted in an ASN.1 error or decryption error (in case of
SNMPv3), subsequent packets received may not have the correct data. This bug has
been fixed.
12. SNMP_ERR_NOSUCHNAME and NOSUCHOBJECTEXP are mapped to the same
error string "There is no such variable name in this MIB". Now,
NOSUCHOBJECTEXP is mapped to "There is no such object in this MIB."
13. While using privacy features, the decryption module was using PKCS#5 padding
scheme. Now, it has been modified so that padding is ignored.
MIBs Package
1. Bug in createVariableBinding method of the MibOperations class when numbered
OID is given as input. This has been fixed.
2. The mibs package was unable to handle the OID of type {parent oid1 oid2 } where a
node with oid1 is defined under the parent node in some other module. This bug has
been fixed.
3. Bug in selecting the next node (GETNEXT) for a particular module in case a node is
available in more than one MIB modules. This bug has been fixed.
High-Level API (beans and ui package)
1. Methods setObjectID() and SetSnmpOID() of SnmpTarget bean do not update the
OID list properly. If an array of OIDs are set using setObjectIDList() or
setSnmpOIDList() method and an OID is set using setObjectID() or setSnmpOID()
method, only the first element of the oidList is replaced instead of removing all other
OIDs from the OID list. This bug has been fixed.
2. Using SnmpTarget bean for multiple polling sessions or prolonged polling leads to out
of memory error. This bug has been fixed.
3. The traps received by the trap parser bean are delayed due to DNS lookup issues.
This bug has been fixed.
4. In the SnmpTarget bean, if a v2c GetResponse PDU is received with a noSuchObject
or noSuchInstance error values, SNMP error was being returned instead of returning
the response PDU with partial results. This bug has been fixed.
5. In SnmpRequestServer bean, the request ID is added to a list to identify the response
PDU. If an early response is received before adding the request to the request list,
the response is dropped. When a response arrives, it checks for the request ID and
waits for 100 milliseconds. If it is not available again, it checks for the request ID
causing a delay when multiple SnmpRequestServer instances are used. This bug has
been fixed.
6. UI problems in the Trap Details screen of the TrapBrowser bean have been fixed.
7. Bug in the handling the nonprintable characters in the trap message of TrapBrowser
bean has been fixed.
8. TrapParserBean used to create a default parser file if the file was not available
sometimes causing problem. Now, the default file is not created and the user has to

AdventNet, Inc. 68
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

set the file properly. Otherwise an error message is displayed and all traps are
accepted.
9. The poll interval value is not set properly if the restart button was clicked in BarGraph
and LineGraph bean of MibBrowser. It has been fixed.
10. Error messages are not displayed if the graphs are plotted for columns with non-
numeric values. This has been fixed.
11. Exception is thrown while changing the table OID in the tableSettingsDemo example
present in uiapplications directory. It has been fixed.
12. The Bar Chart gives a NumberFormatException for large values involving the
exponent sign "E". This has been fixed now.
13. SnmpTrapReceiver does not release resources unless cleanup() method was
invoked from an application. The cleanup() may also release shared resources. This
has been fixed and made deprecated. An alternative method stop() is provided to
stop receiving traps. An application should remove all the TrapListeners registered
with an SnmpTrapListener to release the resources, which are no longer used, by
garbage collector.
14. SnmpRequestServer resources are never garbage collected when no
RequestListeners is registered and removed. This bug has been fixed.
15. In the TrapEvent.getAgentAddress() method, there is a delay involved when a DNS
look-up is performed. This has been fixed.
16. Creating multiple instances of Java bean components (SnmpTarget,
SnmpRequestServer, etc.) and using multi-threading had problem with reusing the
low-level resources. It is fixed by synchronizing the creation of the low-level
resources.
17. Invalid OID format error occurs when the value of the table is set from the combo box.
This has been fixed.
Applet Support API (sas package)
1. If an applet registers for traps with SAServer on a port and if the SAServer receives
any traps, after all the registered applets are closed, deadlock occurs and no more
traps can be received by the SAServer on that port.
Changes from release 2.1 to 2.2

Features added in this release


1. sasappclient applet example is modified and the SAServerClient implementation of
the sasappserver class is removed from sasapps examples directory . Instead, the
TestSsnClient class can be used. It is available in sasapps\sasadvanced directory.
2. getMaxSasType() method has been added in SASClient and SASession classes for
users to find the number of sas types available. It is useful for users to give users
types greater than this value.
3. The SnmpTarget bean throws SnmpPropertyChangeEvent when there is any change
in beans properties.
4. Multiple TrapBrowser windows can be opened for listening on different ports and
multiple TrapBrowsers can listen on the same trap port.
5. The SNMP Group Counters in RFC1213 is supported. A new class SnmpGroup is
provided along with some methods in SnmpAPI.
6. View-based Access Control Model (VACM) is supported in the API.

AdventNet, Inc. 69
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

7. While using the low-level API, the userName on USMUserEntry reference is to be set
in the Snmp3Message as follows.
((Snmp3Message)(pdu.getMsg())).getSecurity().setUserName(userName.getBytes());
or
((Snmp3Message)(pdu.getMsg())).getSecurity().setSecurityName(userName.getByte
s());

This can no longer be used because public access to setUserName and


setSecurityName is removed. Now, the user needs to set the userName on the
SnmpPDU. Instead, the following code can be used.

pdu.setUserName(userName.getBytes())

Refer the examples/low_level_api_examples/snmpapps directory for more


information.
8. Methods to serialize some of the SNMPv3-related tables are provided in SnmpAPI.
9. The constructor SnmpOpaque(SnmpVar) and the method SnmpVar decodeVariable()
have been added to SnmpOpaque.
10. The constructor SnmpBitString(byte[], size) has been added.
11. For SnmpVar and all its derived classes, the method getVarObject() is added. This
returns toValue() or toString() depending on the type of the SNMP variable. For
SnmpString, SnmpBitString, SnmpCounter64, SnmpInt, SnmpNull, and
SnmpUnsignedInt, the getVarObject() method returns toValue(). For SnmpIpAddress
and SnmpOID, it returns toString().
12. The class SnmpProperties has been added to com.adventnet.snmp.snmp2. It uses a
property file snmp.properties in the com.adventnet.snmp.snmp2 directory. Users can
set the values of RESPONSE_QUEUE_SIZE and TIMEOUT_QUEUE_SIZE of
SnmpSession by specifying them in the snmp.properties file. However, it is not
advisable to change the values in this file.
13. Added a convenience routine byte[] encodeVariable(SnmpVar) to get the byte
encoding for the variable.
14. The method loadMibModules() in MibOperations is modified to take a valid URL as
input.
15. Changes are made to MibModule so that while loading the imported modules, the
location is taken from the HTML file specified in MIBS_DIR parameter.
16. Agent-CapabilitiesModule is made public and a method getAgentCapabilities() is
added to MibNode.
17. A feature for adding and deleting rows has been added to the SnmpTablePanel bean.
Now, you can add a row by using the createAndGo(4) method. In this method, the
user should specify all values required to activate a row in a single SET, along with
an assignment of the status available to createAndGo(4).
18. In MibBrowser applet, Remote Browsing of MIB file is supported through SAServer.
19. Option for Serializing MibModule is provided now. You can serialize or load from
serialized file by setting the option provided in MibOperations.
20. Global view option is provided in MibTree.
21. Traps and Textual Conventions defined in a module are listed in the Mib Tree.
22. The method getIsAugmented() is added to MibNode to check whether a node is
augmented or not.
23. Feature for grouping PDUs of SnmpPoller that run under the same JVM has been
added. Groups of PDUs is formed by a set of the SnmpPollers which all have the
same host, port, retries, timeout, pollinterval, contextName, contextID, and principal.
Instead of sending each PDU for each poller, the API stack sends a single PDU.

AdventNet, Inc. 70
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

24. Support for adding and deleting rows is provided in SnmpTableBean.


25. Customizer has been added in all the bean components for editing Snmpv3
properties.
26. The PropertyCombiner bean has been added to set properties of target beans from
single propertyEditor.
27. The method setPortWithExceptionMsg(int) has been added to SnmpTrapReceiver
bean to throw Snmpexception in case of BindException.
28. The method copy() has been added to the SnmpPDU. This returns a copy of the
SnmpPDU.
Bug Fixes done
1. While running applications with the SnmpAPI debug mode active, there is a possibility
of delay due to DNS calls. This has been fixed.
2. SAServer should not create a socket on the system assigned port if the specified
local port is less than zero. This bug has been fixed.
3. Bug with the modify routine in USMUserTable has been fixed.
4. Bug in storing IMPLIED index names has been fixed.
5. Bugs while setting foreGround color, backGround color, font, and size of
LineGraphBean have been fixed.
6. Bug in the example sendv2trap in applications directory has been fixed.
7. Bugs in the node list while loading some of the MIB files have been fixed.
8. The method setRequestID(int) in RequestEvent does not work. It has been fixed now.
9. The SnmpTrapReceiver bean throws NullPointerException when MIB is loaded
without setting the port. This has been fixed.
10. The method getSelectedMibNode() in MibTree returns null. It has been fixed.
11. Exception is thrown while parsing the access value of not-implemented in AGENT-
CAPABILITIES. This has been fixed
12. If the Augmented node is present in the current module, the index is not set properly.
It has been fixed.
13. If non SNMP messages are received, decode failure occurs and the null PDU is
returned. It is added to the response list and NullPointerException is thrown while
checking the reqid for the next request. This has been fixed.
14. AdventNet SNMPv3 API supported only the standard discovery process. Now, the
implementation is modified so that if the msgAuthoritativeEngineID field is of zero-
length, regardless of the other security parameters, the API returns a report PDU
containing the authoritative snmpEngineID.
15. An encrypted timeSync message is sent for the user who had a securityLevel of
authPriv. Now the timeSync Message is sent with a securityLevel of authNoPriv.
16. AdventNet SNMPv3 drops the PDU if the authentication fails. This has been fixed so
that the registered callBack method receives the PDU.
Migration to 2.2
The API compared to the earlier releases. The API users hae tov make some changes to their
applications so that the existing code compiles with AdventNetSnmpv3 2.2 API. This document guides
the API user on the changes to be made to upgrade to the 2.2 release.

AdventNet, Inc. 71
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Changes in the snmp2 package

1. In the 2.1 release and earlier, the SnmpEngineTable class provided methods which could be
used to retrieve the respective SnmpEngineEntry objects for a particular agent host and port
as well as add entries to the table. These methods were static. Now they are made non-static.
Similarly, the USMUserTable class in the 2.1 release and earlier had methods which could be
used to retrieve the respective USMUserEntry objects. The methods in this class which were
static are now non-static. The SnmpAPI instantiates these two classes in its constructor and
has a reference to them. Methods are provided in the SnmpAPI to retrieve these classes.
These methods are getSnmpEngine() to retrieve the SnmpEngineTable reference
and getUSMTable() to retrieve the USMUserTable reference. There is no need for the API
user to separately instantiate these classes. Therefore, the API user writes the code similar to
the following.
SnmpAPI api = new SnmpAPI();
.
.
SnmpSession session = new SnmpSession(api);
.
.
SnmpEngineTable engineTable = session.API.getSnmpEngine();
SnmpEngineEntry engineEntry = engineTable.getEntry(host, port);
.
.
.
USMUserEntry userEntry = new USMUserEntry(userName.getBytes(),
engineEntry.getEngineID());
.
.
.
USMUserTable USMTable = session.API.getUSMTable();
USMTable.addEntry(userEntry);

The API user need not instantiate these classes. Instead, the instance of these classes
provided in the SnmpAPI should be operated.

Moreover, the method init_v3_params in USMUtils class is a comprehensive initialization


routine to perform discovery and time synchronization. When this method is used, the user
need not create/maintain the Engine and USM tables. If this method is already been used
(this method was is present in the 2.1 release and earlier), the existing applications works
with the 2.2 release. Therefere, no changes are required. The snmpget.java in
low_level_api_examples/snmpapps provides a good source of example to understand the
changes.
2. In the release 2.1 and earlier, the get and set methods for SnmpEngineID,
SnmpEngineBoots, SnmpEngineTime, and TimeWindow were static. These methods are now
non-static and the API user needs to perform get and set on the SnmpAPI instance.
3. In the release 2.1 and earlier, the Snmp3Message had a method setMsgFlags. The msgFlags
field of the PDU is calculated internally based on the securityLevel while encoding and
therefore the setMsgFlags method is removed in release 2.2.
4. In the release 2.1 and earlier, the SnmpEngineTable had methods which were static. These
are non-static now. Moreover, the constructor is no longer public and there is no need to
instantiate this class. SnmpAPI instantiates this class in its constructor and provides methods
to retrieve this SnmpEngineTable reference.
5. In the USMUserEntry, public access to setEngineID, setUserName, and setSecurityName is
removed. In earlier versions of AdventNet SNMPv3, while using the lowlevel API, the
userName on USMUserEntry reference needs to be set in theSnmp3Message with the
following code.

AdventNet, Inc. 72
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

((Snmp3Message)(pdu.getMsg())).getSecurity().
setUserName(userName.getBytes());
or
((Snmp3Message)(pdu.getMsg())).getSecurity().
setSecurityName(userName.getBytes());

This can no longer be used as public and now the user needs to set the userName on the
SnmpPDU. Therefore, the following code can be used instead.

pdu.setUserName(userName.getBytes())

Refer the examples present in the low_level_api_examples/snmpapps directory for more


details. Also the methods get/set KeyStatus and get/set Status are removed from the API.
6. In the release 2.1 and earlier, the USMUserTable had methods which were static. These are
non-static now. Moreover, the constructor is no longer public and there is no need to
instantiate this class. The SnmpAPI instantiates this class in its constructor and provides
methods to retrieve this USMUserTable reference.
7. In USMUtils, the method auth_password_to_key is renamed as password_to_key. The
methods signPdu and checkDigest are no longer public.
Changes from release 2.0.1 to 2.1

Features added in this release


1. Support for swing1.0 has been removed.
2. SnmpTrapReceiver has been modified to work with the SNMP Applet Server.
3. A new method decodeDefval has been incorporated in the MibNode. It returns the
SnmpVar corresponding to the defval for the node.
4. Option for unloading mibs is provided. The method unloadMibModule has been
added to MibOperations.
5. The loadMibs method in all the beans has been modified to load only a single MIB at
a time.
6. The addLabel() method in MibOperations to add label which need not be treated as
reserved word. Therefore, in case if a particular reserved word in MIBs is used in a
different manner, the conflict can be resolved using this method.
7. Support for OIDs of the form ModuleName.NodeName has been included.
8. APIs are provided to make USMUserTable and SnmpEngineTable persistent. The
User and Engine Tables are serialized into the files UserEntry.ser and
EngineEntry.ser.
9. A beta version of TrapBrowser and TrapParser bean are provided.
10. The SnmpTablePanel has the following features added.
Sorting of columns with header.
Multi-column selection.
Right-click on header to provide charting options.
Indices with ellipsis button [...] to show decoded indices that can be easily
edited.
Next page selections preserved while scrolling across pages.
Provided ways of customizing columns.
Support for functional SET operations on table entries.

AdventNet, Inc. 73
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

11. The jars have been renamed. AdvSnmpAllBeans.jar is now called


AdventNetSnmp.jar, AdvSnmp.jar is called AdventNetSnmpLLAPI.jar,
and AdvSnmpBeans.jar is now AdventNetSnmpHLAPI.jar.
12. More number of MIBs have been packaged in this release. They are present in the
mibs directory.
Bug Fixes done
1. The packet size restriction has been removed in this release.
2. Memory issues have been fixed with the beans. The poller and requestserver
resources do not get de-allocated because of the underlying thread-based resources.
his has been resolved by inserting checks for listeners and explicit release of
resources when all listeners are removed.
3. Call to MibOperations.createVariableBinding() with some of the mnemonics returned
wrong VarBind value. This has been fixed.
4. The OID should translated from .iso as far as loaded MIBs allow. This has been is
fixed.
5. Exception while parsing AGENT-CAPABILITIES macro has been fixed.
6. The SnmpIpAddress.toString() routine gives a StringIndexOutOfBoundsException in
case of UnKnownHost. It has been fixed and null is returned.
7. ArrayIndexOutOfBoundsException is thrown while using
MibOperations.getSnmpOID(). This has been fixed now.
8. Bug in MODULE-COMPLIANCE in storing the value of OBJECT clause. This has
been fixed.
Changes from release 2.0 to 2.0.1
1. A separate AdvSnmpAllBeans.jar has been provided for working with swing1.1. This is
located in AdventNetSNMP v3 /classes/swing1.1 directory.
2. The PropertySettings bean has been added. This is a GUI component, which allows easy
entry and modification of PDU settings.
3. SnmpTrapReceiver has been modified to listen for traps only when the trap port property for
the bean has been set.
4. SnmpSession now includes methods to enable trap authentication for SNMPv3. The default
setting accepts all v3 traps even if an authentication failure occurs.
5. Bug in large table, which throws ArrayIndexOutOfBounds exception under specific conditions,
has been fixed.
6. LineGraph can be viewed for selected table columns in SnmpTablePanel bean.
7. SnmpTarget has been updated to send notifications.
8. There is a change in SnmpTarget related to traps. If the target SNMP version is v2c or v3, the
v1 trap parameters passed on invoking snmpSendTrap are converted to v2 notification
parameters.
9. SnmpPDU has been modified to disallow sending a v1 trap PDU when the SNMP version for
the PDU is v2c or v3. Sending a v2 version PDU with command type of v1 trap
(TRP_REQ_MSG) is not a valid behavior and is no longer permitted.

AdventNet, Inc. 74
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Known Issues and Limitations


The following are some of the known issues with this product at the time of release.

Please check the known issues page on the AdventNet web site, http://www.adventnet.com, for any
updates to this list of known issues.
1. SnmpSession.open has been known to hang with JIT in jdk1.1.7 on Windows systems and in
jdk1.1.6 and 1.1.7 of Solaris. This is due to problem with the JIT. Either upgrade the JVM to a
later release or please use older versions. This is because of the native threads problem in
Solaris 2.5.1. Please take a look at the following URL from Sun Microsystems for more
information.
http://java.sun.com/products/jdk/1.2/install-solaris-patches.html
http://splash.javasoft.com/products/jdk/1.1/packs/native-threads/README
2. Even after killing rmipoller in rmiAppletDemo the polling thread in rmiserver is not cleaned up.
3. CORBA examples cause a segmentation fault on the SNMP server side on Solaris 2.6 with
JDK 1.2.
4. While adding multiple clients to the SnmpSession, the debugPrint() method of all the clients
are invoked with the debug messages. This causes irrelevant debug messages sent to other
clients.
5. In MibBrowser, BarGraph will not plot multiple values at a time.
6. While using the EJB examples available in the ejbclient directory, the client applications must
set the classpath to AdventNet EJB classes and AdventNetSnmp.jar before setting it to the
Application Servers classes.
7. The help icon in the MibBrowser bean will launch a web browser and try to load the help files
from the installed directory of the package. If the MibBrowser bean is tested outside the
package the help icon will not invoke the help files. Method setHelpURL() of the MibBrowser
bean can be made use of for specifying the proper location.
8. If the session used by the MibBrowser is used by some other bean, then the MibBrowser
debug window will display PDU dumps of requests sent by other beans.
9. Database support (for SNMPv3 user information) is not provided for
async_create_v3_tables() in the high level API.
10. In RMI, after receiving the TrapEvent instance if the client invokes the getTrapDefinition()
method then the return value will always be null.
11. Features like, database support for loading MIBs, storing v3 security parameters etc., are not
available with the HTTPMibBrowser.
12. RMI requests will be slow in Windows NT and Windows 2000 machines. This is because, the
RMI Registry does a DNS lookup for the hostname specified. The work around for this
problem is given in the FAQ section.
13. There are some incompatibility issues in WebLogic 6.0 Application Server with respect to
standard stubs and skeletons. The WebLogic 6.0 does not support the standard stub and
skeleton classes i.e. it looks for weblogic specific stub and skeleton classes. The weblogic
specific stub and skeleton classes have SomeClass_WLStub.class and
SomeClass_WLSkel.class format. Therefore, if we run the startup class 'SnmpStarter' inside
the WebLogic Server it may not succeed.
14. When the same SnmpPDU is sent continuously say after changing some fields like remote
host or remote port, the user has to take care of the requestID that needs to be set on the
SnmpPDU. Otherwise, every request will be sent with the requestID generated first.
15. In the case of applets, when the file name of the imported MIB is different from the module
name, the MIB file could not be loaded.

AdventNet, Inc. 75
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

JDK Issues
Policy files are one way of specifying permissions for RMI in the new security model. To do this,
create a file containing the following.

grant permission java.net.SocketPermission "*:1024-65535",


permission java.net.SocketPermission "*:80","connect";

For example, if you name this file as SnmpRmi.policy, then you have to run snmp_rmiserver as given
below.

java -Djava.security.policy=SnmpRmi.policy
com.adventnet.snmp.rmi.SnmpFactoryImpl

The other issue is related to applets. The appletviewer no longer takes the classpath setting into
consideration. So, for some of the applets such as the requestServerDemo the command to be given
is

appletviewer -J-Xbootclasspath:.;..\..\classes;
c:\jdk1.2\jre\lib\rt.jar requestServerDemo.html

Applets could instead be packaged into jar files for easy use in browsers. Also with JDK1.2 you can
specify dependencies on other jars through extensions. Therefore, if you create an applet that uses
AdventNet beans and the target platform is the JDK1.2-plugin, then just add a line including the
CLASSPATH. The manifest for your
jar will look something like the following.

Manifest-Version: 1.0 Class-Path: AdventNetSnmp.jar

Limitations
1. Currently, when an application sends an SNMPv1 PDU using a session whose version is set
to SNMP_VERSION_3, an SNMPv3 message is sent to the peer. This problem arises
because the API uses SNMP_VERSION_1 as the default PDU version and it could not
distinguish between applications leaving the version in PDU to default and setting it explicitly
to SNMP_VERSION_1. To circumvent this problem, applications should set session version
to SNMP_VERSION_1 and set the PDU version explicitly to SNMP_VERSION_2C or
SNMP_VERSION_3, while communicating with v2c and v3 peers.
2. Currently, it is not possible to use SASClient.clientCall() method for doing asynchronous
communication with SAServer.
3. In the MibBrowser application, while querying for columnar OIDs through the multi-varbind
option, the index also should be specified.
4. Browse option provided in Load MIB dialog of the MibBrowser applet will not work for HTTP.
Please enter the URL in the text field to load the MIB(s) from the server or from the jar file if
available.
5. Switching between TCP/IP and HTTP is not possible during runtime.
6. Loading of MIB files from the signed jars is not supported.

AdventNet, Inc. 76
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Installation Guide

System Requirements
Installation and Setup
Configuring Applications from Launcher
Update Manager
Third-Party Software
Package Structure
Using the Help Manual

This section explains the system requirements to work with AdventNet SNMP API and installing and
setting up in different platforms, such as Windows, Linux, and Solaris.

AdventNet, Inc. 77
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

System Requirements
Hardware
CPU: Minimum 500 MHz Pentium Processor
Memory:Minimum 128 MB RAM
Disk Space: Minimum 150 MB
Software
JDK 1.2 and later including JDK 1.4 - The Windows 95/98/2000/NT / Solaris distribution of
JDK can be downloaded from Sun's Javasoft Web site at http://www.javasoft.com. The
Linux distribution can be downloaded from http://www.blackdown.org.
If you are using JDK 1.2 and above for Linux, you must have glibc 2.0 on your system in order
to run all of the JDK properly.

Note: MibBrowser will work only with JDK 1.2.2 and above.

Java-enabled Web browser (Netscape 4.x and above/IE 4.x and above) with Sun's Java plug-
in to test/view applets within a Web browser, developed using SNMP API. The plug-in is
needed to test/view the applets which use swing or JFC components. The standard Netscape
4.x or IE 4.x browsers do not support JFC classes. Applets that do not use swing components
can be tested using standard Web browsers.
The Java plug-in can be downloaded from the following link
http://java.sun.com/j2se/1.3/jre/index.html.
Please note that the JDK 1.1 patch for Netscape 4.x has to be uninstalled before installing
Sun's Java plug-in. Netscape's JDK 1.1 patch conflicts with Java plug-in from Sun.
BEA Weblogic Application server to test the EJB examples.
Any database and the corresponding JDBC driver for the database support.
Supported Platforms

The product is developed in Java and therefore it is platform independent. You can use the product in
any operating system with the JDK port of that particular OS. On our part, we have tested the product
in the following platforms.
Windows 98
Windows 2000
Windows XP
RedHat Linux 6.x
RedHat Linux 7.x
RedHat Linux 8.x
RedHat Enterprise Linux 4
Solaris 7
Solaris 8
Solaris 9
Solaris 10

AdventNet, Inc. 78
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

To use AdventNet SNMP API's SNMPv3 privacy functions, any one of the following products
should be downloaded and used.
Cryptix 3.x.x security package available at http://www.cryptix.org
JCE 1.2 (Java Cryptography Extension) Framework available at
http://java.sun.com/products/jce.

For EJB Support (to test the EJB examples)


BEA WebLogic Application Server

AdventNet, Inc. 79
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Installation and Setup

Using Example Applications


Running Applets

The two formats in which AdventNet SNMP API is distributed are:


Self-extracting EXE format with Installshield for installation. (for Windows 98,2K,XP)
Zip file distribution (for Solaris/Linux and Windows)
If the downloaded file is in EXE format, run the EXE file to start the installation process and follow the
instructions.
If the downloaded file is in zip format, extract the files using the unzip utility.

Using Example Applications


The package comes with several example applications in various directories. Shell/batch files are
provided in each directory to set the environment variables. To use the examples provided, the shell
script setenv.sh (Unix) or the batch file setenv.bat (Windows) in the directories has to be used
accordingly.

For Unix Users

Unix Shell Script


#!/bin/sh
#Set the java home directory,
#For example: If jdk1.2 is installed in your machine in the
/usr/jdk1.2
#directory then set JAVA_HOME_DIR=/usr/jdk1.2
JAVA_HOME_DIR=`which java`
if [ -z ${JAVA_HOME_DIR} ]
then echo "No Java VM found"
echo "Set JAVA_HOME directory (eg: /javadir/jdk1.3/bin) in the
PATH"
else
JAVA_HOME_DIR=`dirname $JAVA_HOME_DIR`
JAVA_HOME_DIR=`dirname $JAVA_HOME_DIR`
# Set the PATH
PATH=${JAVA_HOME_DIR}:${PATH}
# Set the CLASSPATH
CLASSPATH=.:$SNMP_HOME/jars/AdventNetLogging.jar
:$SNMP_HOME/jars/AdventNetSnmp.jar
export PATH CLASSPATH
fi

Here, SNMP_HOME is the path where <AdventNet/SNMPAPI> is present.

The above script file will set the JAVA_HOME path in the Unix environments. The users can also edit
this file and enter the correct path for the JAVA_HOME_DIR. For example: If JDK 1.2 is installed in
the machine in the "/usr/jdk1.2" directory then the JAVA_HOME_DIR variable should be "/usr/jdk1.2".

AdventNet, Inc. 80
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

For Windows Users

set JAVA_HOME_DIR=\jdk1.2
set PATH=%JAVA_HOME_DIR%\bin;%PATH%
set CLASSPATH=.;..\..\classes;
set
CLASSPATH=%CLASSPATH%;.;%SNMP_HOME%\jars\AdventNetLogging.jar;
%SNMP_HOME%\jars\AdventNetSnmp.jar

Here, SNMP_HOME is the path where <AdventNet/SNMPAPI> is present.

The users have to edit this file and enter the correct path for the JAVA_HOME_DIR. For example: If
JDK 1.2 is installed in the machine in the "c:\jdk1.2" directory then the JAVA_HOME_DIR variable in
this file should be "c:\jdk1.2".

If the JDK version is JDK 1.1.x, swingall.jar has to be included in the classpath.
Setting the CLASSPATH
You can set the CLASSPATH for running the example applications by specifying the jar. For example,
to run the snmpget.java provided in the applications directory, you can set the CLASSPATH as
follows.

export
CLASSPATH=.:../../jars/AdventNetSnmp.jar:../..jars/AdventNetLogging
.jar

The above classpaths will work if you are using snmpget for SNMPv1 and v2c requests and SNMPv3
request without privacy.

To set the CLASSPATH for SNMPv3 requests with privacy, refer the Setting Up Environment for
SNMPv3 section.

Running Applets
The applets that are distributed in the package can be tested/viewed in any Java-enabled Web
browser with Sun Microsystem's Java plug-in. The applets can be launched through the Web server
that is distributed as part of the package. The start_server.bat (Windows) or start_server.sh (Unix)
can be used to start the Web server and SAS. The shell/batch file is available in the <bin> directory of
the package. The SAS is used to bypass the security restriction of the browsers.

Applets are launched by loading the corresponding HTML files through the Web server. The HTML
files contain the necessary parameters that are needed for the applet. For example, the MibBrowser
Applet takes the MIB filename, host name, and community name as parameters from the HTML file.
For instructions on using the applications, see the Running Applets section.

AdventNet, Inc. 81
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Configuring Applications from Launcher


AdventNet SNMP API Launcher is bundled with various tools that can be invoked from a single UI.
The two icons available by default in the Launcher are MibBrowser and StartServer.
MibBrowser invokes the MibBrowser application. It is a complete tool that enables loading,
browsing, and searching MIBs, walking through the MIB tree, and performing all other SNMP-
related functions.
StartServer starts the SAS and Web server. These servers facilitate loading of applets that
are distributed as part of the AdventNet SNMP package.
From the AdventNet SNMP API Launcher, you can invoke the Java Environment settings dialog box
by selecting Options-->Settings item from the menu. Alternatively, you can click the Settings icon on
the toolbar. This dialog box can be used to set the various path and CLASSPATH variables needed to
use the applications. You can also set new CLASSPATH or modify the existing environment
variables. The Settings panel comprises of the left and right frame. The left frame has the General
Settings option and the Applications folder.

The General settings is used to set the global settings which is used throughout the product package.
The image shows the General Settings options.

The following environment settings can be set using the settings option in the Launcher.

Browser path specifies the path for the Web browser. The Web browser is used for loading the
applets and for viewing the help files. To set the path, click the Browse button and select the
corresponding executable for the browser. Note that the complete filename has to be given, not just
the path where the executable lies.

AdventNet, Inc. 82
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

JAVA HOME sets the JAVA_HOME environment variable. By default, it uses the JRE bundled with
the product. You can set it for any Java version. If this field is left blank, the default option JRE is
taken.

JAVA Class Path specifies the CLASSPATH settings necessary for running the application. By
default, the necessary CLASSPATH is set. Additional CLASSPATH settings can be added to the
existing list. Note that the CLASSPATH settings take precedence in the order in which they are listed.
To modify the listing, use the Add, Delete, Up, and Down buttons.

The Applications folder in the settings panel displays all the applications that are part of the product's
package. Any property specific to the application can be set by selecting the corresponding
application.

The settings tab corresponding to each application displays the CLASSPATH settings specific to the
application. Any new classpath settings can be added using this option. The image below shows the
Settings tab invoked for the MibBrowser application.

When an error or an exception occurs in an application, it is displayed on this error text area which is
simultaneously logged into a log file. The log filename is same as the application's name. To view the
list of log files, select Options-->Logs from the menu.

AdventNet, Inc. 83
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Update Manager
The AdventNet SNMP API comes with several tools and utilities which will be useful for the
developers. AdventNet periodically provides service packs or patches which fix certain bugs and
update some HTML files related to documentation. These patch files can be downloaded from the
AdventNet Web Site and updated with the base release.

During the installation of a patch, the corresponding files related to bug fixes are updated in the
product installation directory. The Update Manager asks for the installation directory. By default, the
current working directory is displayed on the text area. It also gives the information of the current
version of the patch installed. Every version contains the bug fixes of the previous version.

To invoke Update Manager, you need to run the UpdateManager.bat (Windows) or


UpdateManager.sh (Unix) file in the <AdventNet/SNMPAPI/bin> directory.

The Update Manager provides a feature wherein the user can query the patch file or a previous
version. On doing this, the user can see the names of the files inside the patch file. AdventNet Update
Manager can be invoked

The main features of the Update Manager are as follows.


Installing AdventNet's patch
Reverting to previous versions
Querying AdventNet's patch file or any previously installed versions
1. Installing AdventNet's Patch
1. Select the radio button Install the patch and click Next.
2. Give the patch files (*.ppm) or click the Browse button to choose the patch files.
3. Click Install to install the patch or click Query to see the contents of the patch file.

AdventNet, Inc. 84
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

2. Reverting to Previous Versions


1. Select the radio button "Revert to Previous Version" and click Next.
2. Select the previous patch version from the list box.
3. Click Revert to revert to the version selected in the combo box or click Query to see the files
of the previous versions installed.

3. Querying AdventNet's Patch File or Any Previously Installed Versions


1. Select the radio button "Query Patch Version" and click Next.
2. If you want to get information regarding a patch file,
Select the radio button "Specific patch file".
Give AdventNet's patch file path in the Patch File Path field or click the Browse
button to choose the file.

AdventNet, Inc. 85
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Click the Query button to query the contents of the patch file.
3. To get the information regarding previous version,
Select the radio button "Patch Installed".
Select any of the previous versions in the "Files in patch" list box to query.
Click the Query button to query the contents of the selected version.

The GetSnmpReleaseVersion class is used to print the release version of the


product. To print the version, set the classpath to AdventNetSnmp.jar and
AdventNetLogging.jar and execute the following command.

java GetSnmpReleaseVersion

The above command prints the product's release version along with the version of
the service pack applied, if any.

AdventNet, Inc. 86
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Third-Party Software
The following third-party tools are bundled with the AdventNet SNMP API.
Tomcat Web Server - extensible Java-based HTTP Server.
o Version - 3.1
o Web Site - http://jakarta.apache.org.
crimson.jar, jaxp.jar - XML Parser used by the Update Manager to parse the config files.
o Version - NA
o Web Site - http://java.sun.com/products/xml.
JimiProclasses.zip - used for supporting png format of image files in Java.
o Version - NA
o Web Site - http://java.sun.com/products/jimi.

The following third-party tools are needed to work with certain modules of the product. This is apart
from the Java-enabled Web browsers and JDK distributions, which are the basic requirements. These
tools are not bundled with the product.

To use AdventNet SNMP API SNMPv3 privacy functions, one of the following products has to be
used.
Cryptix 3.x.x security package available at http://www.cryptix.org.
JCE 1.2 (Java Cryptography Extension) framework available at
http://java.sun.com/products/jce.

For EJB Support (to test the EJB examples)


BEA WebLogic Application Server

AdventNet, Inc. 87
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Package Structure
The directory structure and the files present under the <AdventNet/SNMPAPI> distribution are
provided below. All the files are extracted under <AdventNet/SNMPAPI>directory. The following
image displays the package structure of AdventNet SNMP API.

Windows
Linux
(Click on the desired folder to view its contents)

Directory Contents of the Directory


tomcatserver.bat/tomcatserver.sh - starts the
Tomcat Web server.
start_server.bat/start_server.sh - starts the
SNMP Applet Server (SAS) and the Tomcat HTTP
Web server.
setv3.bat/setv3.sh - sets the CLASSPATH for the
bin encryption packages and the associated
classes.
setallEnv.bat/setallEnv.sh - sets environment
variables.
UpdateManager.bat/UpdateManager.sh - starts
the Update Manager.
Contains class files related to AdventNet SNMP API
classes
Launcher.
conf Contains the config files and the Tools.properties file.
Contains information regarding the jars loaded in look and
data
feel standards, etc.

AdventNet, Inc. 88
AdventNet SNMPAPI 4 Getting Started :: Help Documentation

Directory Contents of the Directory


Contains examples under the sub folders applications,
corbaclient, ejbclient, httpapps, low_level_api_examples,
examples
rmiclient, sasapps, and uiapplications. It also has the
ParserOptions.java and SetValues.java classes.
help Contains complete product documentation.
Allows to perform file operations for applets while using
HTTPUsers
HTTP.
Contains the image files that are used in the AdventNet
images
SNMP API.
AdventNetSnmp.jar - contains the AdventNet
SNMP API core SNMP beans and the User
Interface beans. These beans require the
JFC/Swing classes to work.
AdventNetSnmpBeanInfo.jar - bean info jar and
its related class files.
AdventNetUpdateManager.jar - contains all
classes required to invoke the update manager.
ApiUtils.jar - utility jar
jars crimson.jar and jaxp.jar - used by update
manager.
gcjsnmp2.jar - contains AdventNet's
implementation of java.applet.Applet,
com.adventnet.snmp.snmp2.SASClient, and other
classes necessary for GCJ compilation.
MibBrowser.jar - used for running both
MibBrowser applet and application.
In addition, there are other jars that are common to
applications, such as MibBrowser.

MibBrowser Contains the MibBrowser application/applet-related files.


mibs Contains the standard MIB files.
reference Contains the ejb jar files and the corba.idl file.
Allows to perform file operations for the applets while using
SASusers
SAS.
tomcat Contains the Tomcat Web server-related files.
v1jars Contains SNMPv1 related Jars.
v2cjars Contains SNMPv2c related Jars.

In addition to this structure, the following files are present in the <AdventNet/SNMPAPI>.

COPYRIGHT - Copyright file.


index.html - Applet startup file.
LICENSE_AGREEMENT - License Agreement file.
README.html - Readme file.
setEnv.bat / setEnv.sh - Sets the environment variables for invoking SNMPAPI Launcher.
SnmpTools.bat / SnmpTools.sh - Starts AdventNet SNMP Launcher.

AdventNet, Inc. 89

Vous aimerez peut-être aussi