com.adventnet.snmp.beans
Class SnmpServer

java.lang.Object
  |
  +--com.adventnet.snmp.beans.SnmpServer
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
SnmpRequestServer, SnmpTarget

public class SnmpServer
extends java.lang.Object
implements java.io.Serializable

This class maintains all the resources required for Snmp manager applications and applets. The resources are like SnmpAPI, SnmpSession, MibOperations and etc.The beans component like SnmpTarget and SnmpRequestServer extends this class. For every instance of these beans the SnmpServer uses the same resources.

See Also:
Serialized Form

Field Summary
static byte AUTH_NO_PRIV
          Used to specify that authenticated message be sent to the peer.
static byte AUTH_PRIV
          Used to specify that authentication and privacy are used in the communication with the peer.
static int MD5_AUTH
          Constants USM Authentication
static int NO_AUTH
          Constants USM Authentication
static byte NO_AUTH_NO_PRIV
          Used to specify that both authentication and privacy should not be used.
 SnmpOID[] oidList
          The Object Identifiers will be stored in this array variable.
static int SHA_AUTH
          Constants USM Authentication
static byte SNMPGET
          Constant for SNMP get request.
static byte SNMPGETBULK
          Constant for SNMP V2 Get Bulk request.
static byte SNMPGETNEXT
          Constant for SNMP get next request.
static byte SNMPINFORM
          Constant for SNMP V2 INFORM request.
static byte SNMPREPORT
          Constant for SNMP V2 Report request.
static byte SNMPRESPONSE
          Constant for SNMP response request
static byte SNMPSET
          Constant for SNMP set request request.
static byte SNMPTRAP
          Constant for SNMP trap request.
static byte SNMPV2TRAP
          Constant for SNMP V2 Trap request.
static int VERSION1
          Constant for SNMP Version 1.
static int VERSION2C
          Constant for SNMP Version 2C.
static int VERSION3
          Constant for SNMP Version 3.
 
Method Summary
 void async_create_v3_tables()
          Method to create new users and add them to the userTable in USMUserTable.
 int create_v3_tables()
          Method to create new users and add them to the userTable in USMUserTable.
protected  void finalize()
          This cleanses up the common connection if no one is using
protected  void genEvent(SnmpPDU pdu)
          generate the events to the listeners
protected  void genEvent(SnmpPDU pdu, SnmpServer server)
          generate the events to the listeners
protected  void genTimeoutEvent(SnmpPDU pdu)
          generate the events to the listeners
 java.lang.String getCharacterEncoding()
          Get the Character Encoding being used.
 java.lang.String getHostAddress(java.lang.String hostname)
          To return the ip address as String for the given host name.
 boolean getIgnoreSpecificControlCodes()
          To get the value determining whether the new-line characters, tabs and carriage returns are printed or their hex values.
 java.lang.String[] getLocalAddresses()
          Returns the value of localAddress bound on the session instance.
 java.lang.String getMibPath()
          To get the search Path in which the loadMibModules() will search for the MIB modules.
 boolean getOverwriteCMI()
          Deprecated. Instead use isOverwriteCMI() method.
 byte getSecLevelForTimeSync()
          Returns the securitylevel that would be used when doing a V3 timeSync for a authPriv user.
 SecurityProvider getSecurityProvider()
          Gets the security provider.
 java.lang.Object getSecurityTable(int secModel)
          Returns the SecurityModelTable as an object for a given security model.
 java.lang.String getSerializedMibFileName()
          Gets the name of the Serialized Mib file
 byte[] getSnmpEngineID()
          Gets the SnmpEngineID of this SNMP entity.
 SnmpEngineTable getSnmpEngineTable()
          returns the SnmpEnginetable which contains the information about v3 engine configured to this bean
 int getTimeoutInMilliSec()
          Returns the timeout value in milliseconds.
 int getTimeToWait()
          Gets the inter-packet delay time set on this SnmpSession object.
 USMUserTable getUSMTable()
          returns the USMUserTable which contains the informations about v3 Users
 java.lang.String getV3ConfigTable()
          Gets the table name that was configured for V3.
 void initJdbcParams(java.lang.String driverName, java.lang.String URL, java.lang.String userName, java.lang.String passWord)
          If you need to use a database support, this method should be invoked to initialize the Jdbc Parameters.
 void initSecurityProvider()
          This method initiates the SecurityProvider by reading from the file securityProvider.confg .
 boolean isLoadFromCompiledMibs()
          To check whether the mib will be loaded from CompiledMib files or not.
 boolean isLoadFromSerializedMibs()
          To check whether the mib will be loaded from Serialized Mib files or not.
 boolean isLoadMibsFromDatabase()
          To check whether the mib will be loaded from database or not.
 boolean isOverwriteCMI()
          Returns the status of whether overwrite compiled mibs option is set.
 boolean isOverwriteMibsInDatabase()
          Returns whether the mibs in database will be overwritten or not.
 boolean isReadDesc()
          Returns true if reading descriptions from compiled modules is enabled
 boolean isSendPDUByGroup()
          returns the state whether the pdus will be grouped and sent as single PDU.
 boolean isSerializeMibs()
          Returns whether the mib file will be serialized or not.
 boolean isSetAutoInformResponse()
          High level API method to check if the automatic response flag for the Inform Request is set.
 boolean isSupportedSecurityModel(int secModel)
          Specifies if a particular security model is supported or not.
 boolean isV3DatabaseFlag()
          To check whether V3 database flag is set or not
 void manage_v3_tables()
          Method to create new users and add them to userTable in USMUserTable.
 void managing_v3_tables()
          Method to create new users and add them to userTable in USMUserTable.
 void releaseResources()
          Though the resources will be cleaned up by the garbage collector, if the application is no more using the SnmpTarget and SnmpRequestServer bean instances, this method can be used to immediately release the resources.
 void setAutoInformResponse(boolean flag)
          High-level API method to set the automatic response flag for the Inform Request.
 void setCharacterEncoding(java.lang.String enc)
          Set the Character Encoding to be used.
 void setIgnoreSpecificControlCodes(boolean specConCode)
          To set the value determining whether the new-line characters, tabs and carriage returns are printed or their hex values.
 void setLoadFromCompiledMibs(boolean flag)
          Defines whether to load mib from compiled MIBs.
 void setLoadFromSerializedMibs(boolean flag)
          Method defines whether to load MIB from serialized file.
 void setLoadMibsFromDatabase(boolean flag)
          Defines whether to load mib from DataBase.
 void setMibOperations(MibOperations mibops)
          Set the MibOperations.This can be used when the API user wants the MibBrowser to use the localinstance of MibOperations instead of the Static MibOperations shared by all the other beans.
 void setMibPath(java.lang.String path)
          To set the search Path in which the loadMibModules() will search for the MIB modules.
 void setOverwriteCMI(boolean overWrite)
          Defines whether to overwrite the existing compiled MIB files.
 void setOverwriteMibsInDatabase(boolean overWrite)
          Defines whether to overwrite the MIB in the DataBase.
 void setReadDesc(boolean readFlag)
          Sets the flag to read descriptions from compiled mib modules.
 void setReceiveBufferSize(int size)
          Sets the buffer size of this SnmpServer.
 void setSecLevelForTimeSync(byte secLevel)
          Sets the securityLevel to use when doing a V3 timeSync for a authPriv user.
 void setSendPDUByGroup(boolean flag)
          set the state whether the PDUs should be grouped and send all PDUs as single PDU.After setting it to true this instance will be added to vector.This should be set to false, if this instance is no longer used.
 void setSerializedMibFileName(java.lang.String serFileName)
          Method defines the name of the Serialized MIB File.
 void setSerializeMibs(boolean flag)
          Defines whether to serialize the MibModule.
 void setSnmpEngineID(byte[] engineID)
          Sets the SnmpEngineID for this SNMP entity.
 void setTimeoutInMilliSec(int time)
          Sets the timeout value which should be given in milliseconds.
 void setTimeToWait(int waittime)
          Sets the inter-packet delay time.
 void setV3ConfigTable(java.lang.String tableName)
          Sets the configured tableName specified in the case of V3Database.
 void setV3DatabaseFlag(boolean v3Flag)
          If you need to use database support for V3 , set this flag to true.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

oidList

public SnmpOID[] oidList
The Object Identifiers will be stored in this array variable. This will be used for PDU construction.

SNMPGET

public static final byte SNMPGET
Constant for SNMP get request.

SNMPGETNEXT

public static final byte SNMPGETNEXT
Constant for SNMP get next request.

SNMPRESPONSE

public static final byte SNMPRESPONSE
Constant for SNMP response request

SNMPSET

public static final byte SNMPSET
Constant for SNMP set request request.

SNMPTRAP

public static final byte SNMPTRAP
Constant for SNMP trap request.

SNMPGETBULK

public static final byte SNMPGETBULK
Constant for SNMP V2 Get Bulk request.

SNMPINFORM

public static final byte SNMPINFORM
Constant for SNMP V2 INFORM request.

SNMPV2TRAP

public static final byte SNMPV2TRAP
Constant for SNMP V2 Trap request.

SNMPREPORT

public static final byte SNMPREPORT
Constant for SNMP V2 Report request.

VERSION1

public static final int VERSION1
Constant for SNMP Version 1.

VERSION2C

public static final int VERSION2C
Constant for SNMP Version 2C.

VERSION3

public static final int VERSION3
Constant for SNMP Version 3.

NO_AUTH

public static final int NO_AUTH
Constants USM Authentication

MD5_AUTH

public static final int MD5_AUTH
Constants USM Authentication

SHA_AUTH

public static final int SHA_AUTH
Constants USM Authentication

NO_AUTH_NO_PRIV

public static final byte NO_AUTH_NO_PRIV
Used to specify that both authentication and privacy should not be used.

AUTH_NO_PRIV

public static final byte AUTH_NO_PRIV
Used to specify that authenticated message be sent to the peer.

AUTH_PRIV

public static final byte AUTH_PRIV
Used to specify that authentication and privacy are used in the communication with the peer.
Method Detail

getHostAddress

public java.lang.String getHostAddress(java.lang.String hostname)
To return the ip address as String for the given host name. e.g., returns 192.234.123.56 for littleangel.com
Parameters:
hostname - the host whose ipaddress needs to be looked up
Returns:
the host address, null if Host Not Found

getSecurityProvider

public SecurityProvider getSecurityProvider()
Gets the security provider.
Returns:
Security Provider.

isSendPDUByGroup

public boolean isSendPDUByGroup()
returns the state whether the pdus will be grouped and sent as single PDU.
Returns:
true if the pdus will be sent as single pdu by grouping.

setSendPDUByGroup

public void setSendPDUByGroup(boolean flag)
set the state whether the PDUs should be grouped and send all PDUs as single PDU.After setting it to true this instance will be added to vector.This should be set to false, if this instance is no longer used.

genTimeoutEvent

protected void genTimeoutEvent(SnmpPDU pdu)
generate the events to the listeners

genEvent

protected void genEvent(SnmpPDU pdu,
                        SnmpServer server)
generate the events to the listeners

getUSMTable

public USMUserTable getUSMTable()
returns the USMUserTable which contains the informations about v3 Users
See Also:
USMUserTable

getSnmpEngineTable

public SnmpEngineTable getSnmpEngineTable()
returns the SnmpEnginetable which contains the information about v3 engine configured to this bean
See Also:
SnmpEngineTable

setSnmpEngineID

public void setSnmpEngineID(byte[] engineID)
Sets the SnmpEngineID for this SNMP entity.
Parameters:
engineID - The SnmpEngineID to be used.

getSnmpEngineID

public byte[] getSnmpEngineID()
Gets the SnmpEngineID of this SNMP entity.
Returns:
the SnmpEngineID of this entity.

genEvent

protected void genEvent(SnmpPDU pdu)
generate the events to the listeners

initJdbcParams

public void initJdbcParams(java.lang.String driverName,
                           java.lang.String URL,
                           java.lang.String userName,
                           java.lang.String passWord)
                    throws java.sql.SQLException,
                           java.lang.ClassNotFoundException
If you need to use a database support, this method should be invoked to initialize the Jdbc Parameters.
Parameters:
driverName - Name of the DataBase driver.
URL - URL pointing to the DataBase file name
userName - userName
passWord - password

isV3DatabaseFlag

public boolean isV3DatabaseFlag()
To check whether V3 database flag is set or not
Returns:
boolean v3 database flag

setV3DatabaseFlag

public void setV3DatabaseFlag(boolean v3Flag)
If you need to use database support for V3 , set this flag to true.
Parameters:
v3Flag - flag to be set.

setV3ConfigTable

public void setV3ConfigTable(java.lang.String tableName)
Sets the configured tableName specified in the case of V3Database.
Parameters:
tableName - the name of the table name to be configured.

getV3ConfigTable

public java.lang.String getV3ConfigTable()
Gets the table name that was configured for V3.

releaseResources

public void releaseResources()
Though the resources will be cleaned up by the garbage collector, if the application is no more using the SnmpTarget and SnmpRequestServer bean instances, this method can be used to immediately release the resources. Close the session and api if number of targets sharing it becomes zero. Otherwise decrement the targets count for that session and api.

finalize

protected void finalize()
                 throws java.lang.Throwable
This cleanses up the common connection if no one is using
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable - in case of finalization of errors

getSecLevelForTimeSync

public byte getSecLevelForTimeSync()
Returns the securitylevel that would be used when doing a V3 timeSync for a authPriv user. Can be AUTH_PRIV(3) or AUTH_NO_PRIV(1).
Returns:
The securityLevel.

setSecLevelForTimeSync

public void setSecLevelForTimeSync(byte secLevel)
Sets the securityLevel to use when doing a V3 timeSync for a authPriv user. Can be either AUTH_PRIV(3) or AUTH_NO_PRIV(1).
Parameters:
secLevel - The securityLevel to be set on this SnmpServer instance.

async_create_v3_tables

public void async_create_v3_tables()
Method to create new users and add them to the userTable in USMUserTable. It performs a discovery and timeSync (if required) asynchronously. Returns immediately after sending the requests.

create_v3_tables

public int create_v3_tables()
Method to create new users and add them to the userTable in USMUserTable. Returns 1 if userTable is successfully created, negative value otherwise. The following error codes can be set ErrorCodes DISCOVERY_FAILED, TIME_SYNC_FAILED
Returns:
0 if the version is other than v3. 1 if userTable is created Successfully. -1 if discovery fails. -2 if TimeSync fails. -3 if User is already cretaed for that host and port.
See Also:
ErrorMessages, #getErrorCode(), #gerErrorString()

manage_v3_tables

public void manage_v3_tables()
Method to create new users and add them to userTable in USMUserTable. If the v3 parameters specified are already present in the userTable, it modifies the entry. However the UserName cannot be modified. The following error codes can be set ErrorCodes DISCOVERY_FAILED, TIME_SYNC_FAILED
See Also:
ErrorMessages, #getErrorCode(), #gerErrorString()

managing_v3_tables

public void managing_v3_tables()
                        throws SnmpException
Method to create new users and add them to userTable in USMUserTable. If the v3 parameters specified are already present in the userTable, it modifies the entry. However the UserName cannot be modified. The following error codes can be set ErrorCodes DISCOVERY_FAILED, TIME_SYNC_FAILED
See Also:
ErrorMessages, #getErrorCode(), #gerErrorString()

setCharacterEncoding

public void setCharacterEncoding(java.lang.String enc)
Set the Character Encoding to be used. The encoding specified will be used internally to convert String <--> byte[]. The Default value is ISO8859_1.
Parameters:
enc - The name of a character encoding. All the string encoding will be done base on this encoding.

getCharacterEncoding

public java.lang.String getCharacterEncoding()
Get the Character Encoding being used. This encoding scheme will be used internally to convert String <--> byte[]. The Default value is ISO8859_1.
Returns:
enc The character encoding used.

setSerializeMibs

public void setSerializeMibs(boolean flag)
Defines whether to serialize the MibModule. This flag should be set before loading the MIBs. If this is set to true it will serialize the loaded MIBs. For ex: if RMON2-MIB is loaded, it will serialize this module along with the Imported Modules viz ., RFC1271-MIB,RFC1213-MIB,TOKEN-RING-RMON and saves it in a single file.The name of the serialized file can be set using the setSerializedMibFileName() method. In case,if serialized file name is not set,it will save the serialized file with the MIB file name along with ".ser" extention.Here, it will save it as RMON2-MIB.ser. Serialization is not supported in applets.

isSerializeMibs

public boolean isSerializeMibs()
Returns whether the mib file will be serialized or not.

setLoadFromSerializedMibs

public void setLoadFromSerializedMibs(boolean flag)
Method defines whether to load MIB from serialized file. This flag should be set before loading the MIBs. If both serializeMibs and loadFromSerializedMibs are set to true, it will just try to load the MIB as a serialized file.

setLoadFromCompiledMibs

public void setLoadFromCompiledMibs(boolean flag)
Defines whether to load mib from compiled MIBs. This flag should be set before loading the MIBs (By default it is set to false). If this flag is set to true, it will load from compiled file( i.e; .cmi and .cds files). For ex: RMON2-MIB is loaded, it will automatically load RMON2-MIB.cmi if it exists. otherwise it creates compiled files by parsing and then loads from it. If this flag is set to false, the mib is loaded without creating .cmi and .cds files. This is recommended in case of applets where you have security restrictions for file creation. This is slightly slower than loading from precompiled mibs. In Applets, precompiled mibs can be loaded but it cannot create/write compiled files.

If both loadFromSerializedMibs and loadFromCompiledMibs is set to true, it will just try to load the MIB as a serialized file.


setLoadMibsFromDatabase

public void setLoadMibsFromDatabase(boolean flag)
Defines whether to load mib from DataBase. The Jdbc Parameters should be set, using the initJdbcParams(), before calling this method. This flag should be set before loading the MIBs (By default it is set to false). If this flag is set to true, it will parse the mibs,and store it in the database. For ex: RMON2-MIB is loaded, it will parse the mib and store it in the database.
Parameters:
flag - boolean
See Also:
initJdbcParams(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

setOverwriteMibsInDatabase

public void setOverwriteMibsInDatabase(boolean overWrite)
Defines whether to overwrite the MIB in the DataBase. NOTE: This applies only when the setLoadFromDataBase is set to true.

setOverwriteCMI

public void setOverwriteCMI(boolean overWrite)
Defines whether to overwrite the existing compiled MIB files. NOTE: This applies only when the setLoadFromCompiledMibs is set to true.

getOverwriteCMI

public boolean getOverwriteCMI()
Deprecated. Instead use isOverwriteCMI() method.

Gets the overwrite compiled mibs boolean. NOTE: This applies only when the setLoadFromCompiledMibs is set to true.

isOverwriteCMI

public boolean isOverwriteCMI()
Returns the status of whether overwrite compiled mibs option is set.
Returns:
true if the overwrite compiled mibs is set to true, otherwise false. NOTE: This applies only when the setLoadFromCompiledMibs is set to true

isOverwriteMibsInDatabase

public boolean isOverwriteMibsInDatabase()
Returns whether the mibs in database will be overwritten or not. NOTE: This applies only when the setLoadFromDataBase is set to true.

setReadDesc

public void setReadDesc(boolean readFlag)
Sets the flag to read descriptions from compiled mib modules. Default is true. Set it to false if you don't need the descriptions. NOTE: This applies only when the setLoadFromCompiledMibs is set to true.

isReadDesc

public boolean isReadDesc()
Returns true if reading descriptions from compiled modules is enabled

isLoadFromSerializedMibs

public boolean isLoadFromSerializedMibs()
To check whether the mib will be loaded from Serialized Mib files or not.
Returns:
true if the mib will be loaded from serialized mib files and false otherwise.

isLoadFromCompiledMibs

public boolean isLoadFromCompiledMibs()
To check whether the mib will be loaded from CompiledMib files or not.
Returns:
true if the mib will be loaded from compiled mib files and false otherwise.

isLoadMibsFromDatabase

public boolean isLoadMibsFromDatabase()
To check whether the mib will be loaded from database or not.
Returns:
true if the mib will be loaded from database and false otherwise.

setSerializedMibFileName

public void setSerializedMibFileName(java.lang.String serFileName)
Method defines the name of the Serialized MIB File. The Serialized file will be saved with this filename in the directory from which the mib is loaded.

getIgnoreSpecificControlCodes

public boolean getIgnoreSpecificControlCodes()
To get the value determining whether the new-line characters, tabs and carriage returns are printed or their hex values.
Returns:
true indicates that they are printed as they are false indicates that their hex value is printed.

setIgnoreSpecificControlCodes

public void setIgnoreSpecificControlCodes(boolean specConCode)
To set the value determining whether the new-line characters, tabs and carriage returns are printed or their hex values.
Parameters:
specConCode - true implies that they are printed as they are false implies that their hex value is printed.

getSerializedMibFileName

public java.lang.String getSerializedMibFileName()
Gets the name of the Serialized Mib file

initSecurityProvider

public void initSecurityProvider()
                          throws SnmpException
This method initiates the SecurityProvider by reading from the file securityProvider.confg . It will register all the security models specified in the securityProvider.config file. Before you make any requests using any of the beans, this method has to be called so that the security provider is initiated.
Throws:
SnmpException - if the file could not be found or if the security model could not be registered.

getSecurityTable

public java.lang.Object getSecurityTable(int secModel)
Returns the SecurityModelTable as an object for a given security model.
Returns:
the SecurityModelTable as an object for a given security model. Null if the SecurityModelTable is not created.

isSupportedSecurityModel

public boolean isSupportedSecurityModel(int secModel)
Specifies if a particular security model is supported or not. Returns true if the security model is supported. False otherwise.
Parameters:
secModel - The secuirty model number which needs to be checked if it is supported.
Returns:
true if the specified securitymodel is supported. False otherwise.

isSetAutoInformResponse

public boolean isSetAutoInformResponse()
High level API method to check if the automatic response flag for the Inform Request is set. The default value is true.
Returns:
boolean value of the Inform Request response flag.

setAutoInformResponse

public void setAutoInformResponse(boolean flag)
High-level API method to set the automatic response flag for the Inform Request. If this flag is set to true, then the SNMP stack automatically sends a Get Reponse message back to the sender. The default value is true.
Parameters:
flag - boolean value of the flag to be set.

setMibPath

public void setMibPath(java.lang.String path)
To set the search Path in which the loadMibModules() will search for the MIB modules. Multiple paths can be specified using the pipe (|) as a separator.
Parameters:
searchPath - String specifying the search path, for multiple paths separate the paths by the pipe (|) symbol.

getMibPath

public java.lang.String getMibPath()
To get the search Path in which the loadMibModules() will search for the MIB modules.
Returns:
String containing the path which will be searched for the MIBs. null if the searchPath has not been set previously.

setMibOperations

public void setMibOperations(MibOperations mibops)
Set the MibOperations.This can be used when the API user wants the MibBrowser to use the localinstance of MibOperations instead of the Static MibOperations shared by all the other beans. Note:This will over-write the existing MibOperations used by the other beans.

setTimeToWait

public void setTimeToWait(int waittime)
Sets the inter-packet delay time. This method can be used to set the time delay which is required between consecutive SNMP requests due to low bandwidth in a network.
Parameters:
waitTime - The inter-packet delay time in milli seconds. Warning : This method should be used only when the underlying protocol is UDP.The timeout value to be set for the request should be taken care by the user.

getTimeToWait

public int getTimeToWait()
Gets the inter-packet delay time set on this SnmpSession object.
Returns:
The inter-packet delay time in milli seconds.

setTimeoutInMilliSec

public void setTimeoutInMilliSec(int time)
Sets the timeout value which should be given in milliseconds.
Parameters:
time - The timeout value to be set in milliseconds.

getTimeoutInMilliSec

public int getTimeoutInMilliSec()
Returns the timeout value in milliseconds.
Returns:
the timeout value in milliseconds.

getLocalAddresses

public java.lang.String[] getLocalAddresses()
Returns the value of localAddress bound on the session instance.
Returns:
The localAddress to which session is bound.

setReceiveBufferSize

public void setReceiveBufferSize(int size)
Sets the buffer size of this SnmpServer. This method SHOULD be called only when jdk1.2 and higher version is used.
Parameters:
size - the size of the buffer.


Copyright (c)AdventNet Inc., 1996-2004