/* * 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 The InetAddressAcl 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: *

* * @param peer The 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. *
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. *
The variable list included in the outgoing trap is composed of the following items: * * * @param trapOid The OID identifying 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 snmpV2Trap(SnmpOid trapOid, SnmpVarBindList varBindList) throws IOException, SnmpStatusException; /** * Sends a trap using SNMP V2 trap format. *
The trap is sent to the specified InetAddress destination * using the specified community string (and the ACL file is not used). *
The variable list included in the outgoing trap is composed of the following items: * * * @param address The 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. *
The inform request is sent to each destination defined in the ACL file (if available). * If no ACL file or no destinations are available, the inform request is sent to the local host. *
The variable list included in the outgoing inform request is composed of the following items: * * To send an inform request, the SNMP adaptor server must be active. * * @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 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: *

* To send an inform request, the SNMP adaptor server must be active. * * @param address The 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. *
The inform is sent to the specified SnmpPeer destination. *
The community string used is the one located in the SnmpPeer parameters (SnmpParameters.getInformCommunity() ). *
The variable list included in the outgoing inform is composed of the following items: * * To send an inform request, the SNMP adaptor server must be active. * * @param peer The 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; }