/* * Copyright (c) 1999, 2003, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.jmx.snmp.daemon; // java import import java.util.Vector; import java.io.IOException; import java.net.InetAddress; // jmx imports // import com.sun.jmx.snmp.SnmpPduFactory; import com.sun.jmx.snmp.SnmpStatusException; import com.sun.jmx.snmp.SnmpVarBindList; import com.sun.jmx.snmp.SnmpOid; import com.sun.jmx.snmp.SnmpTimeticks; import com.sun.jmx.snmp.SnmpIpAddress; import com.sun.jmx.snmp.SnmpPduPacket; import com.sun.jmx.snmp.InetAddressAcl; import com.sun.jmx.snmp.SnmpPeer; // SNMP Runtime imports // import com.sun.jmx.snmp.agent.SnmpMibAgent; import com.sun.jmx.snmp.agent.SnmpMibHandler; import com.sun.jmx.snmp.agent.SnmpUserDataFactory; /** * Exposes the remote management interface of the {@link SnmpAdaptorServer} MBean. *
This API is a Sun Microsystems internal API and is subject * to change without notice.
*/ public interface SnmpAdaptorServerMBean extends CommunicatorServerMBean { // GETTERS AND SETTERS //-------------------- /** * Returns the Ip address based ACL used by this SNMP protocol adaptor. * @return TheInetAddressAcl
implementation.
*
* @since 1.5
*/
public InetAddressAcl getInetAddressAcl();
/**
* Returns the port used by this SNMP protocol adaptor for sending traps.
* By default, port 162 is used.
*
* @return The port number for sending SNMP traps.
*/
public Integer getTrapPort();
/**
* Sets the port used by this SNMP protocol adaptor for sending traps.
*
* @param port The port number for sending SNMP traps.
*/
public void setTrapPort(Integer port);
/**
* Returns the port used by this SNMP protocol adaptor for sending inform requests.
* By default, port 162 is used.
*
* @return The port number for sending SNMP inform requests.
*/
public int getInformPort();
/**
* Sets the port used by this SNMP protocol adaptor for sending inform requests.
*
* @param port The port number for sending SNMP inform requests.
*/
public void setInformPort(int port);
/**
* Gets the number of managers that have been processed by this SNMP protocol adaptor
* since its creation.
*
* @return The number of managers handled by this SNMP protocol adaptor
* since its creation. This counter is not reset by the stop
method.
*/
public int getServedClientCount();
/**
* Gets the number of managers currently being processed by this
* SNMP protocol adaptor.
*
* @return The number of managers currently being processed by this
* SNMP protocol adaptor.
*/
public int getActiveClientCount();
/**
* Gets the maximum number of managers that this SNMP protocol adaptor can
* process concurrently.
*
* @return The maximum number of managers that this SNMP protocol adaptor can
* process concurrently.
*/
public int getMaxActiveClientCount();
/**
* Sets the maximum number of managers this SNMP protocol adaptor can
* process concurrently.
*
* @param c The number of managers.
*
* @exception java.lang.IllegalStateException This method has been invoked
* while the communicator was ONLINE
or STARTING
.
*/
public void setMaxActiveClientCount(int c) throws java.lang.IllegalStateException;
/**
* Returns the protocol of this SNMP protocol adaptor.
*
* @return The string "snmp".
*/
public String getProtocol();
/**
* Returns the buffer size of this SNMP protocol adaptor.
* By default, buffer size 1024 is used.
*
* @return The buffer size.
*/
public Integer getBufferSize();
/**
* Sets the buffer size of this SNMP protocol adaptor.
*
* @param s The buffer size.
*
* @exception java.lang.IllegalStateException This method has been invoked
* while the communicator was ONLINE
or STARTING
.
*/
public void setBufferSize(Integer s) throws java.lang.IllegalStateException;
/**
* Gets the number of times to try sending an inform request before giving up.
* @return The maximun number of tries.
*/
public int getMaxTries();
/**
* Changes the maximun number of times to try sending an inform request before giving up.
* @param newMaxTries The maximun number of tries.
*/
public void setMaxTries(int newMaxTries);
/**
* Gets the timeout to wait for an inform response from the manager.
* @return The value of the timeout property.
*/
public int getTimeout();
/**
* Changes the timeout to wait for an inform response from the manager.
* @param newTimeout The timeout (in milliseconds).
*/
public void setTimeout(int newTimeout);
/**
* Returns the message factory of this SNMP protocol adaptor.
*
* @return The factory object.
*/
public SnmpPduFactory getPduFactory();
/**
* Sets the message factory of this SNMP protocol adaptor.
*
* @param factory The factory object (null means the default factory).
*/
public void setPduFactory(SnmpPduFactory factory);
/**
* Set the user-data factory of this SNMP protocol adaptor.
*
* @param factory The factory object (null means no factory).
* @see com.sun.jmx.snmp.agent.SnmpUserDataFactory
*/
public void setUserDataFactory(SnmpUserDataFactory factory);
/**
* Get the user-data factory associated with this SNMP protocol adaptor.
*
* @return The factory object (null means no factory).
* @see com.sun.jmx.snmp.agent.SnmpUserDataFactory
*/
public SnmpUserDataFactory getUserDataFactory();
/**
* Returns true
if authentication traps are enabled.
*
* When this feature is enabled, the SNMP protocol adaptor sends
* an authenticationFailure
trap each time an authentication fails.
*
* The default behaviour is to send authentication traps.
*
* @return true
if authentication traps are enabled, false
otherwise.
*/
public boolean getAuthTrapEnabled();
/**
* Sets the flag indicating if traps need to be sent in case of authentication failure.
*
* @param enabled Flag indicating if traps need to be sent.
*/
public void setAuthTrapEnabled(boolean enabled);
/**
* Returns true
if this SNMP protocol adaptor sends a response in case
* of authentication failure.
*
* When this feature is enabled, the SNMP protocol adaptor sends a response with noSuchName
* or readOnly
when the authentication failed. If the flag is disabled, the
* SNMP protocol adaptor trashes the PDU silently.
*
* The default behavior is to send responses.
*
* @return true
if responses are sent.
*/
public boolean getAuthRespEnabled();
/**
* Sets the flag indicating if responses need to be sent in case of authentication failure.
*
* @param enabled Flag indicating if responses need to be sent.
*/
public void setAuthRespEnabled(boolean enabled);
/**
* Returns the enterprise OID. It is used by {@link #snmpV1Trap snmpV1Trap} to fill
* the 'enterprise' field of the trap request.
*
* @return The OID in string format "x.x.x.x".
*/
public String getEnterpriseOid();
/**
* Sets the enterprise OID.
*
* @param oid The OID in string format "x.x.x.x".
*
* @exception IllegalArgumentException The string format is incorrect
*/
public void setEnterpriseOid(String oid) throws IllegalArgumentException;
/**
* Returns the names of the MIBs available in this SNMP protocol adaptor.
*
* @return An array of MIB names.
*/
public String[] getMibs();
// GETTERS FOR SNMP GROUP (MIBII)
//-------------------------------
/**
* Returns the snmpOutTraps
value defined in MIB-II.
*
* @return The snmpOutTraps
value.
*/
public Long getSnmpOutTraps();
/**
* Returns the snmpOutGetResponses
value defined in MIB-II.
*
* @return The snmpOutGetResponses
value.
*/
public Long getSnmpOutGetResponses();
/**
* Returns the snmpOutGenErrs
value defined in MIB-II.
*
* @return The snmpOutGenErrs
value.
*/
public Long getSnmpOutGenErrs();
/**
* Returns the snmpOutBadValues
value defined in MIB-II.
*
* @return The snmpOutBadValues
value.
*/
public Long getSnmpOutBadValues();
/**
* Returns the snmpOutNoSuchNames
value defined in MIB-II.
*
* @return The snmpOutNoSuchNames
value.
*/
public Long getSnmpOutNoSuchNames();
/**
* Returns the snmpOutTooBigs
value defined in MIB-II.
*
* @return The snmpOutTooBigs
value.
*/
public Long getSnmpOutTooBigs();
/**
* Returns the snmpInASNParseErrs
value defined in MIB-II.
*
* @return The snmpInASNParseErrs
value.
*/
public Long getSnmpInASNParseErrs();
/**
* Returns the snmpInBadCommunityUses
value defined in MIB-II.
*
* @return The snmpInBadCommunityUses
value.
*/
public Long getSnmpInBadCommunityUses();
/**
* Returns the snmpInBadCommunityNames
value defined in MIB-II.
*
* @return The snmpInBadCommunityNames
value.
*/
public Long getSnmpInBadCommunityNames();
/**
* Returns the snmpInBadVersions
value defined in MIB-II.
*
* @return The snmpInBadVersions
value.
*/
public Long getSnmpInBadVersions();
/**
* Returns the snmpOutPkts
value defined in MIB-II.
*
* @return The snmpOutPkts
value.
*/
public Long getSnmpOutPkts();
/**
* Returns the snmpInPkts
value defined in MIB-II.
*
* @return The snmpInPkts
value.
*/
public Long getSnmpInPkts();
/**
* Returns the snmpInGetRequests
value defined in MIB-II.
*
* @return The snmpInGetRequests
value.
*/
public Long getSnmpInGetRequests();
/**
* Returns the snmpInGetNexts
value defined in MIB-II.
*
* @return The snmpInGetNexts
value.
*/
public Long getSnmpInGetNexts();
/**
* Returns the snmpInSetRequests
value defined in MIB-II.
*
* @return The snmpInSetRequests
value.
*/
public Long getSnmpInSetRequests();
/**
* Returns the snmpInTotalSetVars
value defined in MIB-II.
*
* @return The snmpInTotalSetVars
value.
*/
public Long getSnmpInTotalSetVars();
/**
* Returns the snmpInTotalReqVars
value defined in MIB-II.
*
* @return The snmpInTotalReqVars
value.
*/
public Long getSnmpInTotalReqVars();
/**
* Returns the snmpSilentDrops
value defined in rfc 1907 NMPv2-MIB .
*
* @return The snmpSilentDrops
value.
*
* @since 1.5
*/
public Long getSnmpSilentDrops();
/**
* Returns the snmpProxyDrops
value defined in rfc 1907 NMPv2-MIB .
*
* @return The snmpProxyDrops
value.
*
* @since 1.5
*/
public Long getSnmpProxyDrops();
// PUBLIC METHODS
//---------------
/**
* Adds a new MIB in the SNMP MIB handler.
* This method is called automatically by {@link com.sun.jmx.snmp.agent.SnmpMibAgent#setSnmpAdaptor(SnmpMibHandler)}
* and {@link com.sun.jmx.snmp.agent.SnmpMibAgent#setSnmpAdaptorName(ObjectName)}
* and should not be called directly.
*
* @param mib The MIB to add.
*
* @return A reference to the SNMP MIB handler.
*
* @exception IllegalArgumentException If the parameter is null.
*/
public SnmpMibHandler addMib(SnmpMibAgent mib) throws IllegalArgumentException;
/**
* Adds a new MIB in the SNMP MIB handler.
*
* @param mib The MIB to add.
* @param oids The set of OIDs this agent implements.
*
* @return A reference to the SNMP MIB handler.
*
* @exception IllegalArgumentException If the parameter is null.
*
* @since 1.5
*/
public SnmpMibHandler addMib(SnmpMibAgent mib, SnmpOid[] oids) throws IllegalArgumentException;
/**
* Removes the specified MIB from the SNMP protocol adaptor.
* This method is called automatically by {@link com.sun.jmx.snmp.agent.SnmpMibAgent#setSnmpAdaptor(SnmpMibHandler)}
* and {@link com.sun.jmx.snmp.agent.SnmpMibAgent#setSnmpAdaptorName(ObjectName)}
* and should not be called directly.
*
* @param mib The MIB to be removed.
*
* @return true
if the specified mib
was a MIB included in the SNMP MIB handler,
* false
otherwise.
*/
public boolean removeMib(SnmpMibAgent mib);
/**
* Sends a trap using SNMP V1 trap format.
*
The trap is sent to each destination defined in the ACL file (if available).
* If no ACL file or no destinations are available, the trap is sent to the local host.
*
* @param generic The generic number of the trap.
* @param specific The specific number of the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
*
* @exception IOException An I/O error occured while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*/
public void snmpV1Trap(int generic, int specific, SnmpVarBindList varBindList) throws IOException, SnmpStatusException;
/**
* Sends a trap using SNMP V1 trap format.
*
The trap is sent to the specified InetAddress
destination
* using the specified community string (and the ACL file is not used).
*
* @param address The InetAddress
destination of the trap.
* @param cs The community string to be used for the trap.
* @param generic The generic number of the trap.
* @param specific The specific number of the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
*
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*/
public void snmpV1Trap(InetAddress address, String cs, int generic, int specific, SnmpVarBindList varBindList)
throws IOException, SnmpStatusException;
/**
* Sends a trap using SNMP V1 trap format.
*
The trap is sent to the specified SnmpPeer
destination.
* The community string used is the one located in the SnmpPeer
parameters (SnmpParameters.getRdCommunity()
).
*
* @param peer The SnmpPeer
destination of the trap.
* @param agentAddr The agent address to be used for the trap.
* @param enterpOid The enterprise OID to be used for the trap.
* @param generic The generic number of the trap.
* @param specific The specific number of the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
* @param time The time stamp (overwrite the current time).
*
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*
* @since 1.5
*/
public void snmpV1Trap(SnmpPeer peer,
SnmpIpAddress agentAddr,
SnmpOid enterpOid,
int generic,
int specific,
SnmpVarBindList varBindList,
SnmpTimeticks time) throws IOException, SnmpStatusException;
/**
* Sends a trap using SNMP V2 trap format.
*
The trap is sent to the specified SnmpPeer
destination.
*
The community string used is the one located in the SnmpPeer
parameters (SnmpParameters.getRdCommunity()
).
*
The variable list included in the outgoing trap is composed of the following items:
*
sysUpTime.0
with the value specified by time
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* SnmpPeer
destination of the trap.
* @param trapOid The OID identifying the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
* @param time The time stamp (overwrite the current time).
*
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*
* @since 1.5
*/
public void snmpV2Trap(SnmpPeer peer,
SnmpOid trapOid,
SnmpVarBindList varBindList,
SnmpTimeticks time) throws IOException, SnmpStatusException;
/**
* Sends a trap using SNMP V2 trap format.
* sysUpTime.0
with its current value
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* SnmpVarBind
instances or null.
*
* @exception IOException An I/O error occured while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*/
public void snmpV2Trap(SnmpOid trapOid, SnmpVarBindList varBindList) throws IOException, SnmpStatusException;
/**
* Sends a trap using SNMP V2 trap format.
* InetAddress
destination
* using the specified community string (and the ACL file is not used).
* sysUpTime.0
with its current value
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* InetAddress
destination of the trap.
* @param cs The community string to be used for the trap.
* @param trapOid The OID identifying the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
*
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*/
public void snmpV2Trap(InetAddress address, String cs, SnmpOid trapOid, SnmpVarBindList varBindList)
throws IOException, SnmpStatusException;
/**
* Send the specified trap PDU to the passed InetAddress
.
* @param address The destination address.
* @param pdu The pdu to send.
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
*
* @since 1.5
*/
public void snmpPduTrap(InetAddress address, SnmpPduPacket pdu)
throws IOException, SnmpStatusException;
/**
* Send the specified trap PDU to the passed SnmpPeer
.
* @param peer The destination peer. The Read community string is used of SnmpParameters
is used as the trap community string.
* @param pdu The pdu to send.
* @exception IOException An I/O error occurred while sending the trap.
* @exception SnmpStatusException If the trap exceeds the limit defined by bufferSize
.
* @since 1.5
*/
public void snmpPduTrap(SnmpPeer peer,
SnmpPduPacket pdu)
throws IOException, SnmpStatusException;
/**
* Sends an inform using SNMP V2 inform request format.
* sysUpTime.0
with its current value
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* SnmpVarBind
instances or null.
*
* @return A vector of {@link com.sun.jmx.snmp.daemon.SnmpInformRequest} objects.
* If there is no destination host for this inform request, the returned vector will be empty.
*
* @exception IllegalStateException This method has been invoked while the SNMP adaptor server was not active.
* @exception IOException An I/O error occurred while sending the inform request.
* @exception SnmpStatusException If the inform request exceeds the limit defined by bufferSize
.
*/
public Vector snmpInformRequest(SnmpInformHandler cb, SnmpOid trapOid, SnmpVarBindList varBindList)
throws IllegalStateException, IOException, SnmpStatusException;
/**
* Sends an inform using SNMP V2 inform request format.
*
The inform is sent to the specified InetAddress
destination
* using the specified community string.
*
The variable list included in the outgoing inform request is composed of the following items:
*
sysUpTime.0
with its current value
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* InetAddress
destination for this inform request.
* @param cs The community string to be used for the inform request.
* @param cb The callback that is invoked when a request is complete.
* @param trapOid The OID identifying the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
*
* @return The inform request object.
*
* @exception IllegalStateException This method has been invoked while the SNMP adaptor server was not active.
* @exception IOException An I/O error occurred while sending the inform request.
* @exception SnmpStatusException If the inform request exceeds the limit defined by bufferSize
.
*/
public SnmpInformRequest snmpInformRequest(InetAddress address, String cs, SnmpInformHandler cb,
SnmpOid trapOid, SnmpVarBindList varBindList)
throws IllegalStateException, IOException, SnmpStatusException;
/**
* Sends an inform using SNMP V2 inform request format.
* SnmpPeer
destination.
* SnmpPeer
parameters (SnmpParameters.getInformCommunity()
).
* sysUpTime.0
with its current value
* snmpTrapOid.0
with the value specified by trapOid
* all the (oid,values)
from the specified varBindList
* SnmpPeer
destination for this inform request.
* @param cb The callback that is invoked when a request is complete.
* @param trapOid The OID identifying the trap.
* @param varBindList A list of SnmpVarBind
instances or null.
*
* @return The inform request object.
*
* @exception IllegalStateException This method has been invoked while the SNMP adaptor server was not active.
* @exception IOException An I/O error occurred while sending the inform request.
* @exception SnmpStatusException If the inform request exceeds the limit defined by bufferSize
.
*
* @since 1.5
*/
public SnmpInformRequest snmpInformRequest(SnmpPeer peer,
SnmpInformHandler cb,
SnmpOid trapOid,
SnmpVarBindList varBindList) throws IllegalStateException, IOException, SnmpStatusException;
}