Module org.snmp4j
Package org.snmp4j.mp

Class MPv2c

  • All Implemented Interfaces:
    MessageProcessingModel

    public class MPv2c
    extends java.lang.Object
    implements MessageProcessingModel
    The MPv2c is the message processing model for SNMPv2c (community based SNMPv2).
    Version:
    1.9.1
    Author:
    Frank Fock
    • Constructor Detail

      • MPv2c

        public MPv2c()
        Creates a SNMPv2c message processing model with a PDU factory for incoming messages that uses PDU.
      • MPv2c

        public MPv2c​(PDUFactory incomingPDUFactory)
        Creates a SNMPv2c message processing model with a custom PDU factory that must ignore the target parameter when creating a PDU for parsing incoming messages.
        Parameters:
        incomingPDUFactory - a PDUFactory. If null the default factory will be used which creates ScopedPDU instances.
    • Method Detail

      • getID

        public int getID()
        Description copied from interface: MessageProcessingModel
        Gets the numerical ID of the message processing model as defined by the constants in this interface or by an appropriate constant in the class implementing this interface.
        Specified by:
        getID in interface MessageProcessingModel
        Returns:
        a positive integer value.
      • prepareOutgoingMessage

        public <A extends Address> int prepareOutgoingMessage​(A transportAddress,
                                                              int maxMessageSize,
                                                              int messageProcessingModel,
                                                              int securityModel,
                                                              byte[] securityName,
                                                              int securityLevel,
                                                              PDU pdu,
                                                              boolean expectResponse,
                                                              PduHandle sendPduHandle,
                                                              BEROutputStream outgoingMessage,
                                                              TransportStateReference tmStateReference)
                                                       throws java.io.IOException
        Description copied from interface: MessageProcessingModel
        Prepares an outgoing message as defined in RFC3412 §7.1.
        Specified by:
        prepareOutgoingMessage in interface MessageProcessingModel
        Type Parameters:
        A - the target Address type.
        Parameters:
        transportAddress - the destination transport Address.
        maxMessageSize - the maximum message size the transport mapping for the destination address is capable of.
        messageProcessingModel - the MessageProcessingModel ID (typically, the SNMP version).
        securityModel - the security model ID (see SecurityModel) to use.
        securityName - the principal on behalf the message is to be sent.
        securityLevel - the level of security requested (see SecurityLevel).
        pdu - the PDU to send. For a SNMPv1 trap pdu has to be a PDUv1 instance, for SNMPv3 messages it has to be a ScopedPDU instance.
        expectResponse - indicates if a message expects a response. This has to be true for confirmed class PDUs and false otherwise.
        sendPduHandle - the PduHandle that uniquely identifies the sent message.
        outgoingMessage - returns the message to send.
        tmStateReference - the transport model state reference as defined by RFC 5590.
        Returns:
        the status of the message preparation. SnmpConstants.SNMP_MP_OK is returned if on success, otherwise any of the SnmpConstants.SNMP_MP_* values may be returned.
        Throws:
        java.io.IOException - if the supplied PDU could not be encoded to the outgoingMessage
      • prepareResponseMessage

        public <A extends Address> int prepareResponseMessage​(int messageProcessingModel,
                                                              int maxMessageSize,
                                                              int securityModel,
                                                              byte[] securityName,
                                                              int securityLevel,
                                                              PDU pdu,
                                                              int maxSizeResponseScopedPDU,
                                                              StateReference<A> stateReference,
                                                              StatusInformation statusInformation,
                                                              BEROutputStream outgoingMessage)
                                                       throws java.io.IOException
        Description copied from interface: MessageProcessingModel
        Prepares a response message as defined in RFC3412 §7.1.
        Specified by:
        prepareResponseMessage in interface MessageProcessingModel
        Type Parameters:
        A - the target Address type.
        Parameters:
        messageProcessingModel - int the MessageProcessingModel ID (typically, the SNMP version).
        maxMessageSize - the maximum message size the transport mapping for the destination address is capable of.
        securityModel - the security model ID (see SecurityModel) to use.
        securityName - the principal on behalf the message is to be sent.
        securityLevel - the level of security requested (see SecurityLevel).
        pdu - the PDU to send. For a SNMPv1 trap pdu has to be a PDUv1 instance, for SNMPv3 messages it has to be a ScopedPDU instance.
        maxSizeResponseScopedPDU - the maximum size of the scoped PDU the sender (of the request) can accept.
        stateReference - reference to state information presented with the request.
        statusInformation - returns success or error indication. When an error occured, the error counter OID and value are included.
        outgoingMessage - returns the message to send.
        Returns:
        the status of the message preparation. SnmpConstants.SNMP_MP_OK is returned if on success, otherwise any of the SnmpConstants.SNMP_MP_* values may be returned.
        Throws:
        java.io.IOException - if an internal error or a resource exception occured.
      • prepareDataElements

        public <A extends Address> int prepareDataElements​(MessageDispatcher messageDispatcher,
                                                           A transportAddress,
                                                           BERInputStream wholeMsg,
                                                           TransportStateReference tmStateReference,
                                                           Integer32 messageProcessingModel,
                                                           Integer32 securityModel,
                                                           OctetString securityName,
                                                           Integer32 securityLevel,
                                                           MutablePDU pdu,
                                                           PduHandle sendPduHandle,
                                                           Integer32 maxSizeResponseScopedPDU,
                                                           StatusInformation statusInformation,
                                                           MutableStateReference<A> mutableStateReference)
                                                    throws java.io.IOException
        Description copied from interface: MessageProcessingModel
        Prepare data elements from an incoming SNMP message as described in RFC3412 §7.2.
        Specified by:
        prepareDataElements in interface MessageProcessingModel
        Type Parameters:
        A - the target Address type.
        Parameters:
        messageDispatcher - the MessageDispatcher instance to be used to send reports. Thus, messageDispatcher is typically the calling module.
        transportAddress - the origin transport address.
        wholeMsg - the whole message as received from the network.
        tmStateReference - the transport model state reference as defined by RFC 5590.
        messageProcessingModel - returns the message processing model (typically the SNMP version).
        securityModel - returns the security model ID (see SecurityModel.
        securityName - returns the principal.
        securityLevel - returns the requested security level (see SecurityLevel).
        pdu - returns SNMP protocol data unit (the payload of the received message).
        sendPduHandle - returns the handle to match request.
        maxSizeResponseScopedPDU - returns the maximum size of the scoped PDU the sender can accept.
        statusInformation - returns success or error indication. When an error occured, the error counter OID and value are included.
        mutableStateReference - returns the state reference to be used for a possible response. On input the stateReference may contain information about the transport mapping of the incoming request. This allows the MessageProcessingModel to send reports over the same transport as it received them.
        Returns:
        int the status of the message preparation. SnmpConstants.SNMP_MP_OK is returned on success, otherwise any of the SnmpConstants.SNMP_MP_* values may be returned.
        Throws:
        java.io.IOException - if the decoding of the message failed.
      • isProtocolVersionSupported

        public boolean isProtocolVersionSupported​(int snmpProtocolVersion)
        Description copied from interface: MessageProcessingModel
        Checks whether the supplied SNMP protocol version is supported by this message processing model.
        Specified by:
        isProtocolVersionSupported in interface MessageProcessingModel
        Parameters:
        snmpProtocolVersion - the SNMP protocol version.
        Returns:
        true if the supplied SNMP protocol is supported, false otherwise.