com.sun.jmx.snmp.SnmpTooBigException Java Examples

The following examples show how to use com.sun.jmx.snmp.SnmpTooBigException. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SnmpAdaptorServer.java    From jdk1.8-source-analysis with Apache License 2.0 6 votes vote down vote up
/**
 * Send the specified message on trapSocket.
 */
private void sendTrapMessage(SnmpMessage msg)
    throws IOException, SnmpTooBigException {

    byte[] buffer = new byte[bufferSize] ;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length) ;
    int encodingLength = msg.encodeMessage(buffer) ;
    packet.setLength(encodingLength) ;
    packet.setAddress(msg.address) ;
    packet.setPort(msg.port) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sending trap to " + msg.address + ":" +
              msg.port);
    }
    trapSocket.send(packet) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sent to " + msg.address + ":" +
              msg.port);
    }
    snmpOutTraps++;
    snmpOutPkts++;
}
 
Example #2
Source File: SnmpAdaptorServer.java    From TencentKona-8 with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Send the specified message on trapSocket.
 */
private void sendTrapMessage(SnmpMessage msg)
    throws IOException, SnmpTooBigException {

    byte[] buffer = new byte[bufferSize] ;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length) ;
    int encodingLength = msg.encodeMessage(buffer) ;
    packet.setLength(encodingLength) ;
    packet.setAddress(msg.address) ;
    packet.setPort(msg.port) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sending trap to " + msg.address + ":" +
              msg.port);
    }
    trapSocket.send(packet) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sent to " + msg.address + ":" +
              msg.port);
    }
    snmpOutTraps++;
    snmpOutPkts++;
}
 
Example #3
Source File: SnmpAdaptorServer.java    From openjdk-jdk8u with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Send the specified message on trapSocket.
 */
private void sendTrapMessage(SnmpMessage msg)
    throws IOException, SnmpTooBigException {

    byte[] buffer = new byte[bufferSize] ;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length) ;
    int encodingLength = msg.encodeMessage(buffer) ;
    packet.setLength(encodingLength) ;
    packet.setAddress(msg.address) ;
    packet.setPort(msg.port) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sending trap to " + msg.address + ":" +
              msg.port);
    }
    trapSocket.send(packet) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sent to " + msg.address + ":" +
              msg.port);
    }
    snmpOutTraps++;
    snmpOutPkts++;
}
 
Example #4
Source File: SnmpAdaptorServer.java    From jdk8u60 with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Send the specified message on trapSocket.
 */
private void sendTrapMessage(SnmpMessage msg)
    throws IOException, SnmpTooBigException {

    byte[] buffer = new byte[bufferSize] ;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length) ;
    int encodingLength = msg.encodeMessage(buffer) ;
    packet.setLength(encodingLength) ;
    packet.setAddress(msg.address) ;
    packet.setPort(msg.port) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sending trap to " + msg.address + ":" +
              msg.port);
    }
    trapSocket.send(packet) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sent to " + msg.address + ":" +
              msg.port);
    }
    snmpOutTraps++;
    snmpOutPkts++;
}
 
Example #5
Source File: SnmpAdaptorServer.java    From dragonwell8_jdk with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Send the specified message on trapSocket.
 */
private void sendTrapMessage(SnmpMessage msg)
    throws IOException, SnmpTooBigException {

    byte[] buffer = new byte[bufferSize] ;
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length) ;
    int encodingLength = msg.encodeMessage(buffer) ;
    packet.setLength(encodingLength) ;
    packet.setAddress(msg.address) ;
    packet.setPort(msg.port) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sending trap to " + msg.address + ":" +
              msg.port);
    }
    trapSocket.send(packet) ;
    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
            "sendTrapMessage", "sent to " + msg.address + ":" +
              msg.port);
    }
    snmpOutTraps++;
    snmpOutPkts++;
}
 
Example #6
Source File: SnmpV3Message.java    From jdk1.8-source-analysis with Apache License 2.0 5 votes vote down vote up
/**
 * Encodes this message and puts the result in the specified byte array.
 * For internal use only.
 *
 * @param outputBytes An array to receive the resulting encoding.
 *
 * @exception ArrayIndexOutOfBoundsException If the result does not fit
 *                                           into the specified array.
 */
public int encodeMessage(byte[] outputBytes)
    throws SnmpTooBigException {
    int encodingLength = 0;
    if (SNMP_LOGGER.isLoggable(Level.FINER)) {
        SNMP_LOGGER.logp(Level.FINER, SnmpV3Message.class.getName(),
                "encodeMessage",
                "Can't encode directly V3Message! Need a SecuritySubSystem");
    }
    throw new IllegalArgumentException("Can't encode");
}
 
Example #7
Source File: SnmpV3Message.java    From dragonwell8_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Encodes this message and puts the result in the specified byte array.
 * For internal use only.
 *
 * @param outputBytes An array to receive the resulting encoding.
 *
 * @exception ArrayIndexOutOfBoundsException If the result does not fit
 *                                           into the specified array.
 */
public int encodeMessage(byte[] outputBytes)
    throws SnmpTooBigException {
    int encodingLength = 0;
    if (SNMP_LOGGER.isLoggable(Level.FINER)) {
        SNMP_LOGGER.logp(Level.FINER, SnmpV3Message.class.getName(),
                "encodeMessage",
                "Can't encode directly V3Message! Need a SecuritySubSystem");
    }
    throw new IllegalArgumentException("Can't encode");
}
 
Example #8
Source File: SnmpV3Message.java    From TencentKona-8 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Encodes this message and puts the result in the specified byte array.
 * For internal use only.
 *
 * @param outputBytes An array to receive the resulting encoding.
 *
 * @exception ArrayIndexOutOfBoundsException If the result does not fit
 *                                           into the specified array.
 */
public int encodeMessage(byte[] outputBytes)
    throws SnmpTooBigException {
    int encodingLength = 0;
    if (SNMP_LOGGER.isLoggable(Level.FINER)) {
        SNMP_LOGGER.logp(Level.FINER, SnmpV3Message.class.getName(),
                "encodeMessage",
                "Can't encode directly V3Message! Need a SecuritySubSystem");
    }
    throw new IllegalArgumentException("Can't encode");
}
 
Example #9
Source File: SnmpRequestHandler.java    From dragonwell8_jdk with GNU General Public License v2.0 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #10
Source File: SnmpRequestHandler.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #11
Source File: SnmpInformRequest.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
boolean sendPdu() {
    try {
        responsePdu = null;

        SnmpPduFactory pduFactory = adaptor.getPduFactory();
        SnmpMessage msg = (SnmpMessage)pduFactory.encodeSnmpPdu((SnmpPduPacket)requestPdu, adaptor.getBufferSize().intValue());

        if (msg == null) {
            if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
                SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpInformRequest.class.getName(),
                    "sendPdu", "pdu factory returned a null value");
            }
            throw new SnmpStatusException(snmpReqUnknownError);
            // This exception will caught hereafter and reported as an snmpReqUnknownError
            // FIXME: may be it's not the best behaviour ?
        }

        int maxPktSize = adaptor.getBufferSize().intValue();
        byte[] encoding = new byte[maxPktSize];
        int encodingLength = msg.encodeMessage(encoding);

        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINER, SnmpInformRequest.class.getName(),
                "sendPdu", "Dump : \n" + msg.printMessage());
        }

        sendPduPacket(encoding, encodingLength);
        return true;
    } catch (SnmpTooBigException ar) {

        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpInformRequest.class.getName(),
                "sendPdu", "Got unexpected exception", ar);
        }

        setErrorStatusAndIndex(snmpReqPacketOverflow, ar.getVarBindCount());
        requestPdu = null;
        reason = ar.getMessage();
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpInformRequest.class.getName(),
                "sendPdu", "Packet Overflow while building inform request");
        }
    } catch (java.io.IOException ioe) {
        setErrorStatusAndIndex(snmpReqSocketIOError, 0);
        reason = ioe.getMessage();
    } catch (Exception e) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpInformRequest.class.getName(),
                "sendPdu", "Got unexpected exception", e);
        }
        setErrorStatusAndIndex(snmpReqUnknownError, 0);
        reason = e.getMessage();
    }
    return false;
}
 
Example #12
Source File: SnmpRequestHandler.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #13
Source File: SnmpRequestHandler.java    From jdk8u60 with GNU General Public License v2.0 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #14
Source File: SnmpRequestHandler.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #15
Source File: SnmpRequestHandler.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
private SnmpPduPacket reduceResponsePdu(SnmpPduPacket req,
                                        SnmpPduPacket resp,
                                        int acceptedVbCount)
    throws SnmpTooBigException {

    // Reduction can be attempted only on bulk response
    //
    if (req.type != SnmpPduPacket.pduGetBulkRequestPdu) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }

    // We're going to reduce the varbind list.
    // First determine which items should be removed.
    // Next duplicate and replace the existing list by the reduced one.
    //
    // acceptedVbCount is the number of varbind which have been
    // successfully encoded before reaching bufferSize:
    //   * when it is >= 2, we split the varbindlist at this
    //     position (-1 to be safe),
    //   * when it is 1, we only put one (big?) item in the varbindlist
    //   * when it is 0 (in fact, acceptedVbCount is not available),
    //     we split the varbindlist by 2.
    //
    int vbCount;
    if (acceptedVbCount >= 3)
        vbCount = Math.min(acceptedVbCount - 1, resp.varBindList.length) ;
    else if (acceptedVbCount == 1)
        vbCount = 1 ;
    else // acceptedCount == 0 ie it is unknown
        vbCount = resp.varBindList.length / 2 ;

    if (vbCount < 1) {
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", "cannot remove anything");
        }
        throw new SnmpTooBigException(acceptedVbCount) ;
    }
    else {
        SnmpVarBind[] newVbList = new SnmpVarBind[vbCount] ;
        for (int i = 0 ; i < vbCount ; i++) {
            newVbList[i] = resp.varBindList[i] ;
        }
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "reduceResponsePdu", (resp.varBindList.length - newVbList.length) +
                " items have been removed");
        }
        resp.varBindList = newVbList ;
    }

    return resp ;
}
 
Example #16
Source File: SnmpSecuritySubSystem.java    From jdk8u60 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a response is to be sent to the network. It must be securized. This call is routed to the dedicated model according to the model ID.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateResponseMsg(SnmpSecurityCache cache,
                               int version,
                               int msgID,
                               int msgMaxSize,
                               byte msgFlags,
                               int msgSecurityModel,
                               SnmpSecurityParameters params,
                               byte[] contextEngineID,
                               byte[] contextName,
                               byte[] data,
                               int dataLength,
                               byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException, SnmpUnknownSecModelException;
 
Example #17
Source File: SnmpSecuritySubSystem.java    From jdk8u60 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a request is to be sent to the network. It must be securized. This call is routed to the dedicated model according to the model ID.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateRequestMsg(SnmpSecurityCache cache,
                              int version,
                              int msgID,
                              int msgMaxSize,
                              byte msgFlags,
                              int msgSecurityModel,
                              SnmpSecurityParameters params,
                              byte[] contextEngineID,
                              byte[] contextName,
                              byte[] data,
                              int dataLength,
                              byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException, SnmpSecurityException, SnmpUnknownSecModelException;
 
Example #18
Source File: SnmpSecurityModel.java    From jdk8u60 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a request is to be sent to the network. It must be securized.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list.
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateRequestMsg(SnmpSecurityCache cache,
                              int version,
                              int msgID,
                              int msgMaxSize,
                              byte msgFlags,
                              int msgSecurityModel,
                              SnmpSecurityParameters params,
                              byte[] contextEngineID,
                              byte[] contextName,
                              byte[] data,
                              int dataLength,
                              byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException;
 
Example #19
Source File: SnmpSecurityModel.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a request is to be sent to the network. It must be securized.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list.
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateRequestMsg(SnmpSecurityCache cache,
                              int version,
                              int msgID,
                              int msgMaxSize,
                              byte msgFlags,
                              int msgSecurityModel,
                              SnmpSecurityParameters params,
                              byte[] contextEngineID,
                              byte[] contextName,
                              byte[] data,
                              int dataLength,
                              byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException;
 
Example #20
Source File: SnmpMsgProcessingModel.java    From jdk8u60 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that as been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are known.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param encryptedPdu The encrypted pdu.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encodePriv(int version,
                      int msgID,
                      int msgMaxSize,
                      byte msgFlags,
                      int msgSecurityModel,
                      SnmpSecurityParameters params,
                      byte[] encryptedPdu,
                      byte[] outputBytes) throws SnmpTooBigException;
 
Example #21
Source File: SnmpSecurityModel.java    From jdk8u60 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a response is to be sent to the network. It must be securized.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv)
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list.
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateResponseMsg(SnmpSecurityCache cache,
                               int version,
                               int msgID,
                               int msgMaxSize,
                               byte msgFlags,
                               int msgSecurityModel,
                               SnmpSecurityParameters params,
                               byte[] contextEngineID,
                               byte[] contextName,
                               byte[] data,
                               int dataLength,
                               byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException;
 
Example #22
Source File: SnmpMsgProcessingModel.java    From openjdk-jdk8u with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that as been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are known.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param encryptedPdu The encrypted pdu.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encodePriv(int version,
                      int msgID,
                      int msgMaxSize,
                      byte msgFlags,
                      int msgSecurityModel,
                      SnmpSecurityParameters params,
                      byte[] encryptedPdu,
                      byte[] outputBytes) throws SnmpTooBigException;
 
Example #23
Source File: SnmpSecuritySubSystem.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a response is to be sent to the network. It must be securized. This call is routed to the dedicated model according to the model ID.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateResponseMsg(SnmpSecurityCache cache,
                               int version,
                               int msgID,
                               int msgMaxSize,
                               byte msgFlags,
                               int msgSecurityModel,
                               SnmpSecurityParameters params,
                               byte[] contextEngineID,
                               byte[] contextName,
                               byte[] data,
                               int dataLength,
                               byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException, SnmpUnknownSecModelException;
 
Example #24
Source File: SnmpSecuritySubSystem.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a request is to be sent to the network. It must be securized. This call is routed to the dedicated model according to the model ID.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateRequestMsg(SnmpSecurityCache cache,
                              int version,
                              int msgID,
                              int msgMaxSize,
                              byte msgFlags,
                              int msgSecurityModel,
                              SnmpSecurityParameters params,
                              byte[] contextEngineID,
                              byte[] contextName,
                              byte[] data,
                              int dataLength,
                              byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException, SnmpSecurityException, SnmpUnknownSecModelException;
 
Example #25
Source File: SnmpMsgProcessingModel.java    From openjdk-jdk8u with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that has not been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are known.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The encoded data.
 * @param dataLength The encoded data length.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encode(int version,
                  int msgID,
                  int msgMaxSize,
                  byte msgFlags,
                  int msgSecurityModel,
                  SnmpSecurityParameters params,
                  byte[] contextEngineID,
                  byte[] contextName,
                  byte[] data,
                  int dataLength,
                  byte[] outputBytes) throws SnmpTooBigException;
 
Example #26
Source File: SnmpMsgProcessingModel.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that has not been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are known.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The encoded data.
 * @param dataLength The encoded data length.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encode(int version,
                  int msgID,
                  int msgMaxSize,
                  byte msgFlags,
                  int msgSecurityModel,
                  SnmpSecurityParameters params,
                  byte[] contextEngineID,
                  byte[] contextName,
                  byte[] data,
                  int dataLength,
                  byte[] outputBytes) throws SnmpTooBigException;
 
Example #27
Source File: SnmpMsgProcessingSubSystem.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that as been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are not known. It will be routed to the dedicated model according to the version value.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param encryptedPdu The encrypted pdu.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encodePriv(int version,
                      int msgID,
                      int msgMaxSize,
                      byte msgFlags,
                      int msgSecurityModel,
                      SnmpSecurityParameters params,
                      byte[] encryptedPdu,
                      byte[] outputBytes) throws SnmpTooBigException, SnmpUnknownMsgProcModelException;
 
Example #28
Source File: SnmpMsgProcessingSubSystem.java    From JDKSourceCode1.8 with MIT License 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that as been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are not known. It will be routed to the dedicated model according to the version value.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param encryptedPdu The encrypted pdu.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encodePriv(int version,
                      int msgID,
                      int msgMaxSize,
                      byte msgFlags,
                      int msgSecurityModel,
                      SnmpSecurityParameters params,
                      byte[] encryptedPdu,
                      byte[] outputBytes) throws SnmpTooBigException, SnmpUnknownMsgProcModelException;
 
Example #29
Source File: SnmpSecuritySubSystem.java    From openjdk-jdk8u with GNU General Public License v2.0 3 votes vote down vote up
/**
 * Called when a response is to be sent to the network. It must be securized. This call is routed to the dedicated model according to the model ID.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param cache The cache that has been created by calling <CODE>createSecurityCache</CODE> on this model.
 * @param version The SNMP protocol version.
 * @param msgID The current request id.
 * @param msgMaxSize The message max size.
 * @param msgFlags The message flags (reportable, Auth and Priv).
 * @param msgSecurityModel This current security model.
 * @param params The security parameters that contain the model dependant parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The marshalled varbind list
 * @param dataLength The marshalled varbind list length.
 * @param outputBytes The buffer to fill with securized request. This is a representation independant marshalled format. This buffer will be sent to the network.
 * @return The marshalled byte number.
 */
public int generateResponseMsg(SnmpSecurityCache cache,
                               int version,
                               int msgID,
                               int msgMaxSize,
                               byte msgFlags,
                               int msgSecurityModel,
                               SnmpSecurityParameters params,
                               byte[] contextEngineID,
                               byte[] contextName,
                               byte[] data,
                               int dataLength,
                               byte[] outputBytes)
    throws SnmpTooBigException, SnmpStatusException,
           SnmpSecurityException, SnmpUnknownSecModelException;
 
Example #30
Source File: SnmpMsgProcessingSubSystem.java    From TencentKona-8 with GNU General Public License v2.0 3 votes vote down vote up
/**
 * This method is called to encode a full scoped pdu that as not been encrypted. <CODE>contextName</CODE>, <CODE>contextEngineID</CODE> and data are known. It will be routed to the dedicated model according to the version value.
 * <BR>The specified parameters are defined in RFC 2572 (see also the {@link com.sun.jmx.snmp.SnmpV3Message} class).
 * @param version The SNMP protocol version.
 * @param msgID The SNMP message ID.
 * @param msgMaxSize The max message size.
 * @param msgFlags The message flags.
 * @param msgSecurityModel The message security model.
 * @param params The security parameters.
 * @param contextEngineID The context engine ID.
 * @param contextName The context name.
 * @param data The encoded data.
 * @param dataLength The encoded data length.
 * @param outputBytes The buffer containing the encoded message.
 * @return The encoded bytes number.
 */
public int encode(int version,
                  int msgID,
                  int msgMaxSize,
                  byte msgFlags,
                  int msgSecurityModel,
                  SnmpSecurityParameters params,
                  byte[] contextEngineID,
                  byte[] contextName,
                  byte[] data,
                  int dataLength,
                  byte[] outputBytes)
    throws SnmpTooBigException,
           SnmpUnknownMsgProcModelException ;