Java Code Examples for com.sun.jmx.snmp.SnmpDefinitions#pduSetRequestPdu()

The following examples show how to use com.sun.jmx.snmp.SnmpDefinitions#pduSetRequestPdu() . 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: SnmpRequestHandler.java    From openjdk-8-source with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Check the type of the pdu: only the get/set/bulk request
 * are accepted.
 */
private boolean checkPduType(SnmpPduPacket pdu) {

    boolean result;

    switch(pdu.type) {

    case SnmpDefinitions.pduGetRequestPdu:
    case SnmpDefinitions.pduGetNextRequestPdu:
    case SnmpDefinitions.pduSetRequestPdu:
    case SnmpDefinitions.pduGetBulkRequestPdu:
        result = true ;
        break;

    default:
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "checkPduType", "cannot respond to this kind of PDU");
        }
        result = false ;
        break;
    }

    return result ;
}
 
Example 2
Source File: SnmpRequestHandler.java    From jdk1.8-source-analysis with Apache License 2.0 6 votes vote down vote up
/**
 * Check the type of the pdu: only the get/set/bulk request
 * are accepted.
 */
private boolean checkPduType(SnmpPduPacket pdu) {

    boolean result;

    switch(pdu.type) {

    case SnmpDefinitions.pduGetRequestPdu:
    case SnmpDefinitions.pduGetNextRequestPdu:
    case SnmpDefinitions.pduSetRequestPdu:
    case SnmpDefinitions.pduGetBulkRequestPdu:
        result = true ;
        break;

    default:
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "checkPduType", "cannot respond to this kind of PDU");
        }
        result = false ;
        break;
    }

    return result ;
}
 
Example 3
Source File: SnmpMib.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Processes a <CODE>set</CODE> operation.
 *
 */
// Implements the method defined in SnmpMibAgent. See SnmpMibAgent
// for java-doc
//
@Override
public void set(SnmpMibRequest req) throws SnmpStatusException {

    SnmpRequestTree handlers = null;

    // Optimization: we're going to get the whole SnmpRequestTree
    // built in the "check" method, so that we don't have to rebuild
    // it here.
    //
    if (req instanceof SnmpMibRequestImpl)
        handlers = ((SnmpMibRequestImpl)req).getRequestTree();

    // Optimization didn't work: we have to rebuild the tree.
    //
    // Builds the request tree: creation is not allowed, operation
    // is atomic.
    //
    final int reqType = SnmpDefinitions.pduSetRequestPdu;
    if (handlers == null) handlers = getHandlers(req,false,true,reqType);
    handlers.switchCreationFlag(false);
    handlers.setPduType(reqType);

    SnmpRequestTree.Handler h;
    SnmpMibNode meta;

    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, SnmpMib.class.getName(),
                "set", "Processing handlers for SET... ");
    }

    // For each sub-request stored in the request-tree, invoke the
    // get() method.
    for (Enumeration<SnmpRequestTree.Handler> eh=handlers.getHandlers();eh.hasMoreElements();) {
        h = eh.nextElement();

        // Gets the Meta node. It can be either a Group Meta or a
        // Table Meta.
        //
        meta = handlers.getMetaNode(h);

        // Gets the depth of the Meta node in the OID tree
        final int depth = handlers.getOidDepth(h);

        for (Enumeration<SnmpMibSubRequest> rqs=handlers.getSubRequests(h);
             rqs.hasMoreElements();) {

            // Invoke the set() operation
            meta.set(rqs.nextElement(),depth);
        }
    }
}
 
Example 4
Source File: SnmpSubRequestHandler.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV2(int errorStatus, int reqPduType) {
    // Map v1 codes onto v2 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    // For get / getNext / getBulk the only global error
    // (PDU-level) possible is genErr.
    //
    if ((reqPduType != SnmpDefinitions.pduSetRequestPdu) &&
        (reqPduType != SnmpDefinitions.pduWalkRequest)) {
        if(errorStatus == SnmpDefinitions.snmpRspAuthorizationError)
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspGenErr;
    }

    // Map to noSuchName
    //      if ((errorStatus == SnmpDefinitions.snmpRspNoSuchName) ||
    //   (errorStatus == SnmpStatusException.noSuchInstance) ||
    //  (errorStatus == SnmpStatusException.noSuchObject))
    //  return SnmpDefinitions.snmpRspNoSuchName;

    // SnmpStatusException.noSuchInstance and
    // SnmpStatusException.noSuchObject can't happen...

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoAccess;

    // Map to notWritable
    if (errorStatus == SnmpDefinitions.snmpRspReadOnly)
            return SnmpDefinitions.snmpRspNotWritable;

    // Map to wrongValue
    if (errorStatus == SnmpDefinitions.snmpRspBadValue)
        return SnmpDefinitions.snmpRspWrongValue;

    // Other valid V2 codes
    if ((errorStatus == SnmpDefinitions.snmpRspNoAccess) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError) ||
        (errorStatus == SnmpDefinitions.snmpRspNotWritable) ||
        (errorStatus == SnmpDefinitions.snmpRspNoCreation) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongType) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongEncoding) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongValue) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentValue) ||
        (errorStatus == SnmpDefinitions.snmpRspResourceUnavailable) ||
        (errorStatus == SnmpDefinitions.snmpRspCommitFailed) ||
        (errorStatus == SnmpDefinitions.snmpRspUndoFailed))
        return errorStatus;

    // Ivalid V2 code => genErr
    return SnmpDefinitions.snmpRspGenErr;
}
 
Example 5
Source File: SnmpRequestTree.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
public void addVarbind(SnmpVarBind varbind, SnmpOid entryoid,
                               boolean isnew, SnmpVarBind statusvb)
            throws SnmpStatusException {
            Vector<SnmpVarBind> v = null;
            SnmpVarBind rs = statusvb;

            if (entryoids == null) {
//              entryoids = new ArrayList();
//              entrylists = new ArrayList();
//              isentrynew = new ArrayList();
                v = new Vector<>();
//              entryoids.add(entryoid);
//              entrylists.add(v);
//              isentrynew.add(new Boolean(isnew));
                add(0,entryoid,v,isnew,rs);
            } else {
                // int pos = findOid(entryoids,entryoid);
                // int pos = findOid(entryoids,entrycount,entryoid);
                final int pos =
                    getInsertionPoint(entryoids,entrycount,entryoid);
                if (pos > -1 && pos < entrycount &&
                    entryoid.compareTo(entryoids[pos]) == 0) {
                    v  = entrylists[pos];
                    rs = rowstatus[pos];
                } else {
                    // if (pos == -1 || pos >= entryoids.size() ) {
                    // if (pos == -1 || pos >= entrycount ) {
                    // pos = getInsertionPoint(entryoids,entryoid);
                    // pos = getInsertionPoint(entryoids,entrycount,entryoid);
                    v = new Vector<>();
//                  entryoids.add(pos,entryoid);
//                  entrylists.add(pos,v);
//                  isentrynew.add(pos,new Boolean(isnew));
                    add(pos,entryoid,v,isnew,rs);
                }
//              } else v = (Vector) entrylists.get(pos);
                    // } else v = entrylists[pos];
                if (statusvb != null) {
                    if ((rs != null) && (rs != statusvb) &&
                        ((type == SnmpDefinitions.pduWalkRequest) ||
                         (type == SnmpDefinitions.pduSetRequestPdu))) {
                        throw new SnmpStatusException(
                              SnmpStatusException.snmpRspInconsistentValue);
                    }
                    rowstatus[pos] = statusvb;
                }
            }

            // We do not include the status variable in the varbind,
            // because we're going to set it separately...
            //
            if (statusvb != varbind)
                v.addElement(varbind);
        }
 
Example 6
Source File: SnmpRequestTree.java    From openjdk-8 with GNU General Public License v2.0 4 votes vote down vote up
void setPduType(int pduType) {
    type = pduType;
    setreqflag = ((pduType == SnmpDefinitions.pduWalkRequest) ||
        (pduType == SnmpDefinitions.pduSetRequestPdu));
}
 
Example 7
Source File: SnmpRequestTree.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
void setPduType(int pduType) {
    type = pduType;
    setreqflag = ((pduType == SnmpDefinitions.pduWalkRequest) ||
        (pduType == SnmpDefinitions.pduSetRequestPdu));
}
 
Example 8
Source File: SnmpRequestTree.java    From TencentKona-8 with GNU General Public License v2.0 4 votes vote down vote up
public void addVarbind(SnmpVarBind varbind, SnmpOid entryoid,
                               boolean isnew, SnmpVarBind statusvb)
            throws SnmpStatusException {
            Vector<SnmpVarBind> v = null;
            SnmpVarBind rs = statusvb;

            if (entryoids == null) {
//              entryoids = new ArrayList();
//              entrylists = new ArrayList();
//              isentrynew = new ArrayList();
                v = new Vector<>();
//              entryoids.add(entryoid);
//              entrylists.add(v);
//              isentrynew.add(new Boolean(isnew));
                add(0,entryoid,v,isnew,rs);
            } else {
                // int pos = findOid(entryoids,entryoid);
                // int pos = findOid(entryoids,entrycount,entryoid);
                final int pos =
                    getInsertionPoint(entryoids,entrycount,entryoid);
                if (pos > -1 && pos < entrycount &&
                    entryoid.compareTo(entryoids[pos]) == 0) {
                    v  = entrylists[pos];
                    rs = rowstatus[pos];
                } else {
                    // if (pos == -1 || pos >= entryoids.size() ) {
                    // if (pos == -1 || pos >= entrycount ) {
                    // pos = getInsertionPoint(entryoids,entryoid);
                    // pos = getInsertionPoint(entryoids,entrycount,entryoid);
                    v = new Vector<>();
//                  entryoids.add(pos,entryoid);
//                  entrylists.add(pos,v);
//                  isentrynew.add(pos,new Boolean(isnew));
                    add(pos,entryoid,v,isnew,rs);
                }
//              } else v = (Vector) entrylists.get(pos);
                    // } else v = entrylists[pos];
                if (statusvb != null) {
                    if ((rs != null) && (rs != statusvb) &&
                        ((type == SnmpDefinitions.pduWalkRequest) ||
                         (type == SnmpDefinitions.pduSetRequestPdu))) {
                        throw new SnmpStatusException(
                              SnmpStatusException.snmpRspInconsistentValue);
                    }
                    rowstatus[pos] = statusvb;
                }
            }

            // We do not include the status variable in the varbind,
            // because we're going to set it separately...
            //
            if (statusvb != varbind)
                v.addElement(varbind);
        }
 
Example 9
Source File: SnmpRequestHandler.java    From jdk8u_jdk with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Optimize when there is only one sub request
 */
private SnmpPduPacket turboProcessingGetSet(SnmpPduRequest req,
                                            Object userData) {

    int errorStatus;
    SnmpSubRequestHandler sub = subs.elements().nextElement();
    sub.setUserData(userData);

    // Indicate to the sub request that a check must be invoked ...
    // OK we should have defined out own tag for that !
    //
    if (req.type == SnmpDefinitions.pduSetRequestPdu) {
        sub.type= pduWalkRequest;
        sub.run();
        sub.type= pduSetRequestPdu;

        // Check the error status.
        //
        errorStatus= sub.getErrorStatus();
        if (errorStatus != SnmpDefinitions.snmpRspNoError) {
            // No point to go any further.
            //
            return newErrorResponsePdu(req, errorStatus,
                                       sub.getErrorIndex() + 1) ;
        }
    }

    // process the operation
    //

    sub.run();
    errorStatus= sub.getErrorStatus();
    if (errorStatus != SnmpDefinitions.snmpRspNoError) {
        // No point to go any further.
        //
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "turboProcessingGetSet", "an error occurs");
        }
        int realIndex= sub.getErrorIndex() + 1;
        return newErrorResponsePdu(req, errorStatus, realIndex) ;
    }

    // So far so good. So we need to concatenate all the answers.
    //

    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
           "turboProcessingGetSet",  "build the unified response for request "
            + req.requestId);
    }
    return mergeResponses(req);
}
 
Example 10
Source File: SnmpSubRequestHandler.java    From dragonwell8_jdk with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV2(int errorStatus, int reqPduType) {
    // Map v1 codes onto v2 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    // For get / getNext / getBulk the only global error
    // (PDU-level) possible is genErr.
    //
    if ((reqPduType != SnmpDefinitions.pduSetRequestPdu) &&
        (reqPduType != SnmpDefinitions.pduWalkRequest)) {
        if(errorStatus == SnmpDefinitions.snmpRspAuthorizationError)
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspGenErr;
    }

    // Map to noSuchName
    //      if ((errorStatus == SnmpDefinitions.snmpRspNoSuchName) ||
    //   (errorStatus == SnmpStatusException.noSuchInstance) ||
    //  (errorStatus == SnmpStatusException.noSuchObject))
    //  return SnmpDefinitions.snmpRspNoSuchName;

    // SnmpStatusException.noSuchInstance and
    // SnmpStatusException.noSuchObject can't happen...

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoAccess;

    // Map to notWritable
    if (errorStatus == SnmpDefinitions.snmpRspReadOnly)
            return SnmpDefinitions.snmpRspNotWritable;

    // Map to wrongValue
    if (errorStatus == SnmpDefinitions.snmpRspBadValue)
        return SnmpDefinitions.snmpRspWrongValue;

    // Other valid V2 codes
    if ((errorStatus == SnmpDefinitions.snmpRspNoAccess) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError) ||
        (errorStatus == SnmpDefinitions.snmpRspNotWritable) ||
        (errorStatus == SnmpDefinitions.snmpRspNoCreation) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongType) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongEncoding) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongValue) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentValue) ||
        (errorStatus == SnmpDefinitions.snmpRspResourceUnavailable) ||
        (errorStatus == SnmpDefinitions.snmpRspCommitFailed) ||
        (errorStatus == SnmpDefinitions.snmpRspUndoFailed))
        return errorStatus;

    // Ivalid V2 code => genErr
    return SnmpDefinitions.snmpRspGenErr;
}
 
Example 11
Source File: SnmpRequestTree.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
public void addVarbind(SnmpVarBind varbind, SnmpOid entryoid,
                               boolean isnew, SnmpVarBind statusvb)
            throws SnmpStatusException {
            Vector<SnmpVarBind> v = null;
            SnmpVarBind rs = statusvb;

            if (entryoids == null) {
//              entryoids = new ArrayList();
//              entrylists = new ArrayList();
//              isentrynew = new ArrayList();
                v = new Vector<>();
//              entryoids.add(entryoid);
//              entrylists.add(v);
//              isentrynew.add(new Boolean(isnew));
                add(0,entryoid,v,isnew,rs);
            } else {
                // int pos = findOid(entryoids,entryoid);
                // int pos = findOid(entryoids,entrycount,entryoid);
                final int pos =
                    getInsertionPoint(entryoids,entrycount,entryoid);
                if (pos > -1 && pos < entrycount &&
                    entryoid.compareTo(entryoids[pos]) == 0) {
                    v  = entrylists[pos];
                    rs = rowstatus[pos];
                } else {
                    // if (pos == -1 || pos >= entryoids.size() ) {
                    // if (pos == -1 || pos >= entrycount ) {
                    // pos = getInsertionPoint(entryoids,entryoid);
                    // pos = getInsertionPoint(entryoids,entrycount,entryoid);
                    v = new Vector<>();
//                  entryoids.add(pos,entryoid);
//                  entrylists.add(pos,v);
//                  isentrynew.add(pos,new Boolean(isnew));
                    add(pos,entryoid,v,isnew,rs);
                }
//              } else v = (Vector) entrylists.get(pos);
                    // } else v = entrylists[pos];
                if (statusvb != null) {
                    if ((rs != null) && (rs != statusvb) &&
                        ((type == SnmpDefinitions.pduWalkRequest) ||
                         (type == SnmpDefinitions.pduSetRequestPdu))) {
                        throw new SnmpStatusException(
                              SnmpStatusException.snmpRspInconsistentValue);
                    }
                    rowstatus[pos] = statusvb;
                }
            }

            // We do not include the status variable in the varbind,
            // because we're going to set it separately...
            //
            if (statusvb != varbind)
                v.addElement(varbind);
        }
 
Example 12
Source File: SnmpSubRequestHandler.java    From hottub with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV2(int errorStatus, int reqPduType) {
    // Map v1 codes onto v2 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    // For get / getNext / getBulk the only global error
    // (PDU-level) possible is genErr.
    //
    if ((reqPduType != SnmpDefinitions.pduSetRequestPdu) &&
        (reqPduType != SnmpDefinitions.pduWalkRequest)) {
        if(errorStatus == SnmpDefinitions.snmpRspAuthorizationError)
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspGenErr;
    }

    // Map to noSuchName
    //      if ((errorStatus == SnmpDefinitions.snmpRspNoSuchName) ||
    //   (errorStatus == SnmpStatusException.noSuchInstance) ||
    //  (errorStatus == SnmpStatusException.noSuchObject))
    //  return SnmpDefinitions.snmpRspNoSuchName;

    // SnmpStatusException.noSuchInstance and
    // SnmpStatusException.noSuchObject can't happen...

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoAccess;

    // Map to notWritable
    if (errorStatus == SnmpDefinitions.snmpRspReadOnly)
            return SnmpDefinitions.snmpRspNotWritable;

    // Map to wrongValue
    if (errorStatus == SnmpDefinitions.snmpRspBadValue)
        return SnmpDefinitions.snmpRspWrongValue;

    // Other valid V2 codes
    if ((errorStatus == SnmpDefinitions.snmpRspNoAccess) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError) ||
        (errorStatus == SnmpDefinitions.snmpRspNotWritable) ||
        (errorStatus == SnmpDefinitions.snmpRspNoCreation) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongType) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongEncoding) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongValue) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentValue) ||
        (errorStatus == SnmpDefinitions.snmpRspResourceUnavailable) ||
        (errorStatus == SnmpDefinitions.snmpRspCommitFailed) ||
        (errorStatus == SnmpDefinitions.snmpRspUndoFailed))
        return errorStatus;

    // Ivalid V2 code => genErr
    return SnmpDefinitions.snmpRspGenErr;
}
 
Example 13
Source File: SnmpRequestTree.java    From openjdk-jdk8u with GNU General Public License v2.0 4 votes vote down vote up
void setPduType(int pduType) {
    type = pduType;
    setreqflag = ((pduType == SnmpDefinitions.pduWalkRequest) ||
        (pduType == SnmpDefinitions.pduSetRequestPdu));
}
 
Example 14
Source File: SnmpSubRequestHandler.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV2(int errorStatus, int reqPduType) {
    // Map v1 codes onto v2 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    // For get / getNext / getBulk the only global error
    // (PDU-level) possible is genErr.
    //
    if ((reqPduType != SnmpDefinitions.pduSetRequestPdu) &&
        (reqPduType != SnmpDefinitions.pduWalkRequest)) {
        if(errorStatus == SnmpDefinitions.snmpRspAuthorizationError)
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspGenErr;
    }

    // Map to noSuchName
    //      if ((errorStatus == SnmpDefinitions.snmpRspNoSuchName) ||
    //   (errorStatus == SnmpStatusException.noSuchInstance) ||
    //  (errorStatus == SnmpStatusException.noSuchObject))
    //  return SnmpDefinitions.snmpRspNoSuchName;

    // SnmpStatusException.noSuchInstance and
    // SnmpStatusException.noSuchObject can't happen...

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoAccess;

    // Map to notWritable
    if (errorStatus == SnmpDefinitions.snmpRspReadOnly)
            return SnmpDefinitions.snmpRspNotWritable;

    // Map to wrongValue
    if (errorStatus == SnmpDefinitions.snmpRspBadValue)
        return SnmpDefinitions.snmpRspWrongValue;

    // Other valid V2 codes
    if ((errorStatus == SnmpDefinitions.snmpRspNoAccess) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError) ||
        (errorStatus == SnmpDefinitions.snmpRspNotWritable) ||
        (errorStatus == SnmpDefinitions.snmpRspNoCreation) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongType) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongEncoding) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongValue) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentValue) ||
        (errorStatus == SnmpDefinitions.snmpRspResourceUnavailable) ||
        (errorStatus == SnmpDefinitions.snmpRspCommitFailed) ||
        (errorStatus == SnmpDefinitions.snmpRspUndoFailed))
        return errorStatus;

    // Ivalid V2 code => genErr
    return SnmpDefinitions.snmpRspGenErr;
}
 
Example 15
Source File: SnmpRequestHandler.java    From JDKSourceCode1.8 with MIT License 4 votes vote down vote up
/**
 * Optimize when there is only one sub request
 */
private SnmpPduPacket turboProcessingGetSet(SnmpPduRequest req,
                                            Object userData) {

    int errorStatus;
    SnmpSubRequestHandler sub = subs.elements().nextElement();
    sub.setUserData(userData);

    // Indicate to the sub request that a check must be invoked ...
    // OK we should have defined out own tag for that !
    //
    if (req.type == SnmpDefinitions.pduSetRequestPdu) {
        sub.type= pduWalkRequest;
        sub.run();
        sub.type= pduSetRequestPdu;

        // Check the error status.
        //
        errorStatus= sub.getErrorStatus();
        if (errorStatus != SnmpDefinitions.snmpRspNoError) {
            // No point to go any further.
            //
            return newErrorResponsePdu(req, errorStatus,
                                       sub.getErrorIndex() + 1) ;
        }
    }

    // process the operation
    //

    sub.run();
    errorStatus= sub.getErrorStatus();
    if (errorStatus != SnmpDefinitions.snmpRspNoError) {
        // No point to go any further.
        //
        if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINEST)) {
            SNMP_ADAPTOR_LOGGER.logp(Level.FINEST, dbgTag,
               "turboProcessingGetSet", "an error occurs");
        }
        int realIndex= sub.getErrorIndex() + 1;
        return newErrorResponsePdu(req, errorStatus, realIndex) ;
    }

    // So far so good. So we need to concatenate all the answers.
    //

    if (SNMP_ADAPTOR_LOGGER.isLoggable(Level.FINER)) {
        SNMP_ADAPTOR_LOGGER.logp(Level.FINER, dbgTag,
           "turboProcessingGetSet",  "build the unified response for request "
            + req.requestId);
    }
    return mergeResponses(req);
}
 
Example 16
Source File: SnmpRequestTree.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
void setPduType(int pduType) {
    type = pduType;
    setreqflag = ((pduType == SnmpDefinitions.pduWalkRequest) ||
        (pduType == SnmpDefinitions.pduSetRequestPdu));
}
 
Example 17
Source File: SnmpSubRequestHandler.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
static final int mapErrorStatusToV2(int errorStatus, int reqPduType) {
    // Map v1 codes onto v2 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    // For get / getNext / getBulk the only global error
    // (PDU-level) possible is genErr.
    //
    if ((reqPduType != SnmpDefinitions.pduSetRequestPdu) &&
        (reqPduType != SnmpDefinitions.pduWalkRequest)) {
        if(errorStatus == SnmpDefinitions.snmpRspAuthorizationError)
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspGenErr;
    }

    // Map to noSuchName
    //      if ((errorStatus == SnmpDefinitions.snmpRspNoSuchName) ||
    //   (errorStatus == SnmpStatusException.noSuchInstance) ||
    //  (errorStatus == SnmpStatusException.noSuchObject))
    //  return SnmpDefinitions.snmpRspNoSuchName;

    // SnmpStatusException.noSuchInstance and
    // SnmpStatusException.noSuchObject can't happen...

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoAccess;

    // Map to notWritable
    if (errorStatus == SnmpDefinitions.snmpRspReadOnly)
            return SnmpDefinitions.snmpRspNotWritable;

    // Map to wrongValue
    if (errorStatus == SnmpDefinitions.snmpRspBadValue)
        return SnmpDefinitions.snmpRspWrongValue;

    // Other valid V2 codes
    if ((errorStatus == SnmpDefinitions.snmpRspNoAccess) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError) ||
        (errorStatus == SnmpDefinitions.snmpRspNotWritable) ||
        (errorStatus == SnmpDefinitions.snmpRspNoCreation) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongType) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongEncoding) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongValue) ||
        (errorStatus == SnmpDefinitions.snmpRspWrongLength) ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentValue) ||
        (errorStatus == SnmpDefinitions.snmpRspResourceUnavailable) ||
        (errorStatus == SnmpDefinitions.snmpRspCommitFailed) ||
        (errorStatus == SnmpDefinitions.snmpRspUndoFailed))
        return errorStatus;

    // Ivalid V2 code => genErr
    return SnmpDefinitions.snmpRspGenErr;
}
 
Example 18
Source File: SnmpSubRequestHandler.java    From jdk8u-jdk with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV1(int errorStatus, int reqPduType) {
    // Map v2 codes onto v1 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoSuchName;

    if ((errorStatus == SnmpStatusException.noSuchInstance) ||
        (errorStatus == SnmpStatusException.noSuchObject)   ||
        (errorStatus == SnmpDefinitions.snmpRspNoAccess)    ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError)){

        return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus ==
                SnmpDefinitions.snmpRspAuthorizationError)         ||
               (errorStatus == SnmpDefinitions.snmpRspNotWritable)) {

        if (reqPduType == SnmpDefinitions.pduWalkRequest)
            return SnmpDefinitions.snmpRspReadOnly;
        else
            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus == SnmpDefinitions.snmpRspNoCreation)) {

            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus == SnmpDefinitions.snmpRspWrongType)      ||
               (errorStatus == SnmpDefinitions.snmpRspWrongLength)    ||
               (errorStatus == SnmpDefinitions.snmpRspWrongEncoding)  ||
               (errorStatus == SnmpDefinitions.snmpRspWrongValue)     ||
               (errorStatus == SnmpDefinitions.snmpRspWrongLength)    ||
               (errorStatus ==
                SnmpDefinitions.snmpRspInconsistentValue)) {

        if ((reqPduType == SnmpDefinitions.pduSetRequestPdu) ||
            (reqPduType == SnmpDefinitions.pduWalkRequest))
            return SnmpDefinitions.snmpRspBadValue;
        else
            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus ==
                SnmpDefinitions.snmpRspResourceUnavailable) ||
               (errorStatus ==
                SnmpDefinitions.snmpRspCommitFailed)        ||
               (errorStatus == SnmpDefinitions.snmpRspUndoFailed)) {

        return SnmpDefinitions.snmpRspGenErr;

    }

    // At this point we should have a V1 error code
    //
    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    if( (errorStatus == SnmpDefinitions.snmpRspBadValue) ||
        (errorStatus == SnmpDefinitions.snmpRspReadOnly)) {
        if ((reqPduType == SnmpDefinitions.pduSetRequestPdu) ||
            (reqPduType == SnmpDefinitions.pduWalkRequest))
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspNoSuchName;
    }

    // We have a snmpRspGenErr, or something which is not defined
    // in RFC1905 => return a snmpRspGenErr
    //
    return SnmpDefinitions.snmpRspGenErr;

}
 
Example 19
Source File: SnmpSubRequestHandler.java    From openjdk-jdk8u-backup with GNU General Public License v2.0 4 votes vote down vote up
static final int mapErrorStatusToV1(int errorStatus, int reqPduType) {
    // Map v2 codes onto v1 codes
    //
    if (errorStatus == SnmpDefinitions.snmpRspNoError)
        return SnmpDefinitions.snmpRspNoError;

    if (errorStatus == SnmpDefinitions.snmpRspGenErr)
        return SnmpDefinitions.snmpRspGenErr;

    if (errorStatus == SnmpDefinitions.snmpRspNoSuchName)
        return SnmpDefinitions.snmpRspNoSuchName;

    if ((errorStatus == SnmpStatusException.noSuchInstance) ||
        (errorStatus == SnmpStatusException.noSuchObject)   ||
        (errorStatus == SnmpDefinitions.snmpRspNoAccess)    ||
        (errorStatus == SnmpDefinitions.snmpRspInconsistentName) ||
        (errorStatus == SnmpDefinitions.snmpRspAuthorizationError)){

        return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus ==
                SnmpDefinitions.snmpRspAuthorizationError)         ||
               (errorStatus == SnmpDefinitions.snmpRspNotWritable)) {

        if (reqPduType == SnmpDefinitions.pduWalkRequest)
            return SnmpDefinitions.snmpRspReadOnly;
        else
            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus == SnmpDefinitions.snmpRspNoCreation)) {

            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus == SnmpDefinitions.snmpRspWrongType)      ||
               (errorStatus == SnmpDefinitions.snmpRspWrongLength)    ||
               (errorStatus == SnmpDefinitions.snmpRspWrongEncoding)  ||
               (errorStatus == SnmpDefinitions.snmpRspWrongValue)     ||
               (errorStatus == SnmpDefinitions.snmpRspWrongLength)    ||
               (errorStatus ==
                SnmpDefinitions.snmpRspInconsistentValue)) {

        if ((reqPduType == SnmpDefinitions.pduSetRequestPdu) ||
            (reqPduType == SnmpDefinitions.pduWalkRequest))
            return SnmpDefinitions.snmpRspBadValue;
        else
            return SnmpDefinitions.snmpRspNoSuchName;

    } else if ((errorStatus ==
                SnmpDefinitions.snmpRspResourceUnavailable) ||
               (errorStatus ==
                SnmpDefinitions.snmpRspCommitFailed)        ||
               (errorStatus == SnmpDefinitions.snmpRspUndoFailed)) {

        return SnmpDefinitions.snmpRspGenErr;

    }

    // At this point we should have a V1 error code
    //
    if (errorStatus == SnmpDefinitions.snmpRspTooBig)
        return SnmpDefinitions.snmpRspTooBig;

    if( (errorStatus == SnmpDefinitions.snmpRspBadValue) ||
        (errorStatus == SnmpDefinitions.snmpRspReadOnly)) {
        if ((reqPduType == SnmpDefinitions.pduSetRequestPdu) ||
            (reqPduType == SnmpDefinitions.pduWalkRequest))
            return errorStatus;
        else
            return SnmpDefinitions.snmpRspNoSuchName;
    }

    // We have a snmpRspGenErr, or something which is not defined
    // in RFC1905 => return a snmpRspGenErr
    //
    return SnmpDefinitions.snmpRspGenErr;

}
 
Example 20
Source File: SnmpRequestTree.java    From jdk1.8-source-analysis with Apache License 2.0 4 votes vote down vote up
public void addVarbind(SnmpVarBind varbind, SnmpOid entryoid,
                               boolean isnew, SnmpVarBind statusvb)
            throws SnmpStatusException {
            Vector<SnmpVarBind> v = null;
            SnmpVarBind rs = statusvb;

            if (entryoids == null) {
//              entryoids = new ArrayList();
//              entrylists = new ArrayList();
//              isentrynew = new ArrayList();
                v = new Vector<>();
//              entryoids.add(entryoid);
//              entrylists.add(v);
//              isentrynew.add(new Boolean(isnew));
                add(0,entryoid,v,isnew,rs);
            } else {
                // int pos = findOid(entryoids,entryoid);
                // int pos = findOid(entryoids,entrycount,entryoid);
                final int pos =
                    getInsertionPoint(entryoids,entrycount,entryoid);
                if (pos > -1 && pos < entrycount &&
                    entryoid.compareTo(entryoids[pos]) == 0) {
                    v  = entrylists[pos];
                    rs = rowstatus[pos];
                } else {
                    // if (pos == -1 || pos >= entryoids.size() ) {
                    // if (pos == -1 || pos >= entrycount ) {
                    // pos = getInsertionPoint(entryoids,entryoid);
                    // pos = getInsertionPoint(entryoids,entrycount,entryoid);
                    v = new Vector<>();
//                  entryoids.add(pos,entryoid);
//                  entrylists.add(pos,v);
//                  isentrynew.add(pos,new Boolean(isnew));
                    add(pos,entryoid,v,isnew,rs);
                }
//              } else v = (Vector) entrylists.get(pos);
                    // } else v = entrylists[pos];
                if (statusvb != null) {
                    if ((rs != null) && (rs != statusvb) &&
                        ((type == SnmpDefinitions.pduWalkRequest) ||
                         (type == SnmpDefinitions.pduSetRequestPdu))) {
                        throw new SnmpStatusException(
                              SnmpStatusException.snmpRspInconsistentValue);
                    }
                    rowstatus[pos] = statusvb;
                }
            }

            // We do not include the status variable in the varbind,
            // because we're going to set it separately...
            //
            if (statusvb != varbind)
                v.addElement(varbind);
        }