Java Code Examples for com.sun.jmx.snmp.SnmpStatusException#snmpRspGenErr()
The following examples show how to use
com.sun.jmx.snmp.SnmpStatusException#snmpRspGenErr() .
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: SnmpMibOid.java From openjdk-8-source with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 2
Source File: SnmpMibOid.java From jdk1.8-source-analysis with Apache License 2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 3
Source File: SnmpMibOid.java From dragonwell8_jdk with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 4
Source File: SnmpMibOid.java From jdk8u-jdk with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 5
Source File: SnmpMibOid.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 6
Source File: SnmpMibOid.java From jdk8u-jdk with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 7
Source File: SnmpMibOid.java From TencentKona-8 with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 8
Source File: SnmpMibOid.java From JDKSourceCode1.8 with MIT License | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 9
Source File: SnmpMibOid.java From jdk8u60 with GNU General Public License v2.0 | 5 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; SnmpMibNode node = null; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth > length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noSuchObject); } else if (depth == length) { // The oid is not complete... throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else { // Some children variable or subobject is being querried // getChild() will raise an exception if no child is found. // final SnmpMibNode child= getChild(oid[depth]); // XXXX zzzz : what about null children? // (variables for nested groups) // if child==null, then we're dealing with a variable or // a table: we register this node. // This behaviour should be overriden in subclasses, // in particular in group meta classes: the group // meta classes that hold tables should take care // of forwarding this call to all the tables involved. // if (child == null) handlers.add(this,depth,varbind); else child.findHandlingNode(varbind,oid,depth+1,handlers); } }
Example 10
Source File: SnmpMibTable.java From JDKSourceCode1.8 with MIT License | 4 votes |
@Override final synchronized void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth >= length) throw new SnmpStatusException(SnmpStatusException.noAccess); if (oid[depth] != nodeId) throw new SnmpStatusException(SnmpStatusException.noAccess); if (depth+2 >= length) throw new SnmpStatusException(SnmpStatusException.noAccess); // Checks that the oid is valid // validateOid(oid,depth); // Gets the part of the OID that identifies the entry final SnmpOid entryoid = new SnmpEntryOid(oid, depth+2); // Finds the entry: false means that the entry does not exists final Object data = handlers.getUserData(); final boolean hasEntry = contains(entryoid, data); // Fails if the entry is not found and the table does not // not support creation. // We know that the entry does not exists if (isentry == false). if (!hasEntry) { if (!handlers.isCreationAllowed()) { // we're not doing a set throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else if (!isCreationEnabled()) // we're doing a set but creation is disabled. throw new SnmpStatusException(SnmpStatusException.snmpRspNoAccess); } final long var = oid[depth+1]; // Validate the entry id if (hasEntry) { // The entry already exists - validate the id validateVarEntryId(entryoid,var,data); } // Registers this node for the identified entry. // if (handlers.isSetRequest() && isRowStatus(entryoid,var,data)) // We only try to identify the RowStatus for SET operations // handlers.add(this,depth,entryoid,varbind,(!hasEntry),varbind); else handlers.add(this,depth,entryoid,varbind,(!hasEntry)); }
Example 11
Source File: SnmpMibGroup.java From hottub with GNU General Public License v2.0 | 4 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); final Object data = handlers.getUserData(); if (depth >= length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noAccess); } long arc = oid[depth]; if (isNestedArc(arc)) { // This arc leads to a subgroup: delegates the search to the // method defined in SnmpMibOid super.findHandlingNode(varbind,oid,depth,handlers); } else if (isTable(arc)) { // This arc leads to a table: forward the search to the table. // Gets the table SnmpMibTable table = getTable(arc); // Forward the search to the table table.findHandlingNode(varbind,oid,depth+1,handlers); } else { // If it's not a variable, throws an exception validateVarId(arc, data); // The trailing .0 is missing in the OID if (depth+2 > length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // There are too many arcs left in the OID (there should remain // a single trailing .0) if (depth+2 < length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // The last trailing arc is not .0 if (oid[depth+1] != 0L) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // It's one of our variable, register this node. handlers.add(this,depth,varbind); } }
Example 12
Source File: SnmpRequestTree.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
public static int mapGetException(int errorStatus, int version) throws SnmpStatusException { final int errorCode = errorStatus; if (version == SnmpDefinitions.snmpVersionOne) return errorCode; int mappedErrorCode = errorCode; // Now take care of V2 errorCodes that can be stored // in the varbind itself: if (errorCode == SnmpStatusException.noSuchObject) // noSuchObject => noSuchObject mappedErrorCode = errorCode; else if (errorCode == SnmpStatusException.noSuchInstance) // noSuchInstance => noSuchInstance mappedErrorCode = errorCode; // Now we're going to try to transform every other // global code in either noSuchInstance or noSuchObject, // so that the get can return a partial result. // // Only noSuchInstance or noSuchObject can be stored // in the varbind itself. // // According to RFC 1905: noAccess is emitted when the // the access is denied because it is not in the MIB view... // else if (errorCode == SnmpStatusException.noAccess) // noAccess => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // According to RFC 1905: (my interpretation because it is not // really clear) The specified variable name exists - but the // variable does not exists and cannot be created under the // present circumstances (probably because the request specifies // another variable/value which is incompatible, or because the // value of some other variable in the MIB prevents the creation) // // Note that this error should never be raised in a GET context // but who knows? // else if (errorCode == SnmpStatusException.snmpRspInconsistentName) // inconsistentName => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // All the errors comprised between snmpRspWrongType and // snmpRspInconsistentValue concern values: so we're going // to assume the OID was correct, and reply with noSuchInstance. // // Note that this error should never be raised in a GET context // but who knows? // else if ((errorCode >= SnmpStatusException.snmpRspWrongType) && (errorCode <= SnmpStatusException.snmpRspInconsistentValue)) mappedErrorCode = SnmpStatusException.noSuchInstance; // We're going to assume the OID was correct, and reply // with noSuchInstance. // else if (errorCode == SnmpStatusException.readOnly) mappedErrorCode = SnmpStatusException.noSuchInstance; // For all other errors but genErr, we're going to reply with // noSuchObject // else if (errorCode != SnmpStatusException.snmpRspAuthorizationError && errorCode != SnmpStatusException.snmpRspGenErr) mappedErrorCode = SnmpStatusException.noSuchObject; // Only genErr will abort the GET and be returned as global // error. // return mappedErrorCode; }
Example 13
Source File: SnmpMibGroup.java From openjdk-8-source with GNU General Public License v2.0 | 4 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); final Object data = handlers.getUserData(); if (depth >= length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noAccess); } long arc = oid[depth]; if (isNestedArc(arc)) { // This arc leads to a subgroup: delegates the search to the // method defined in SnmpMibOid super.findHandlingNode(varbind,oid,depth,handlers); } else if (isTable(arc)) { // This arc leads to a table: forward the search to the table. // Gets the table SnmpMibTable table = getTable(arc); // Forward the search to the table table.findHandlingNode(varbind,oid,depth+1,handlers); } else { // If it's not a variable, throws an exception validateVarId(arc, data); // The trailing .0 is missing in the OID if (depth+2 > length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // There are too many arcs left in the OID (there should remain // a single trailing .0) if (depth+2 < length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // The last trailing arc is not .0 if (oid[depth+1] != 0L) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // It's one of our variable, register this node. handlers.add(this,depth,varbind); } }
Example 14
Source File: SnmpRequestTree.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
public static int mapGetException(int errorStatus, int version) throws SnmpStatusException { final int errorCode = errorStatus; if (version == SnmpDefinitions.snmpVersionOne) return errorCode; int mappedErrorCode = errorCode; // Now take care of V2 errorCodes that can be stored // in the varbind itself: if (errorCode == SnmpStatusException.noSuchObject) // noSuchObject => noSuchObject mappedErrorCode = errorCode; else if (errorCode == SnmpStatusException.noSuchInstance) // noSuchInstance => noSuchInstance mappedErrorCode = errorCode; // Now we're going to try to transform every other // global code in either noSuchInstance or noSuchObject, // so that the get can return a partial result. // // Only noSuchInstance or noSuchObject can be stored // in the varbind itself. // // According to RFC 1905: noAccess is emitted when the // the access is denied because it is not in the MIB view... // else if (errorCode == SnmpStatusException.noAccess) // noAccess => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // According to RFC 1905: (my interpretation because it is not // really clear) The specified variable name exists - but the // variable does not exists and cannot be created under the // present circumstances (probably because the request specifies // another variable/value which is incompatible, or because the // value of some other variable in the MIB prevents the creation) // // Note that this error should never be raised in a GET context // but who knows? // else if (errorCode == SnmpStatusException.snmpRspInconsistentName) // inconsistentName => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // All the errors comprised between snmpRspWrongType and // snmpRspInconsistentValue concern values: so we're going // to assume the OID was correct, and reply with noSuchInstance. // // Note that this error should never be raised in a GET context // but who knows? // else if ((errorCode >= SnmpStatusException.snmpRspWrongType) && (errorCode <= SnmpStatusException.snmpRspInconsistentValue)) mappedErrorCode = SnmpStatusException.noSuchInstance; // We're going to assume the OID was correct, and reply // with noSuchInstance. // else if (errorCode == SnmpStatusException.readOnly) mappedErrorCode = SnmpStatusException.noSuchInstance; // For all other errors but genErr, we're going to reply with // noSuchObject // else if (errorCode != SnmpStatusException.snmpRspAuthorizationError && errorCode != SnmpStatusException.snmpRspGenErr) mappedErrorCode = SnmpStatusException.noSuchObject; // Only genErr will abort the GET and be returned as global // error. // return mappedErrorCode; }
Example 15
Source File: SnmpMibGroup.java From jdk8u-dev-jdk with GNU General Public License v2.0 | 4 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); final Object data = handlers.getUserData(); if (depth >= length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noAccess); } long arc = oid[depth]; if (isNestedArc(arc)) { // This arc leads to a subgroup: delegates the search to the // method defined in SnmpMibOid super.findHandlingNode(varbind,oid,depth,handlers); } else if (isTable(arc)) { // This arc leads to a table: forward the search to the table. // Gets the table SnmpMibTable table = getTable(arc); // Forward the search to the table table.findHandlingNode(varbind,oid,depth+1,handlers); } else { // If it's not a variable, throws an exception validateVarId(arc, data); // The trailing .0 is missing in the OID if (depth+2 > length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // There are too many arcs left in the OID (there should remain // a single trailing .0) if (depth+2 < length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // The last trailing arc is not .0 if (oid[depth+1] != 0L) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // It's one of our variable, register this node. handlers.add(this,depth,varbind); } }
Example 16
Source File: SnmpRequestTree.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
public static int mapGetException(int errorStatus, int version) throws SnmpStatusException { final int errorCode = errorStatus; if (version == SnmpDefinitions.snmpVersionOne) return errorCode; int mappedErrorCode = errorCode; // Now take care of V2 errorCodes that can be stored // in the varbind itself: if (errorCode == SnmpStatusException.noSuchObject) // noSuchObject => noSuchObject mappedErrorCode = errorCode; else if (errorCode == SnmpStatusException.noSuchInstance) // noSuchInstance => noSuchInstance mappedErrorCode = errorCode; // Now we're going to try to transform every other // global code in either noSuchInstance or noSuchObject, // so that the get can return a partial result. // // Only noSuchInstance or noSuchObject can be stored // in the varbind itself. // // According to RFC 1905: noAccess is emitted when the // the access is denied because it is not in the MIB view... // else if (errorCode == SnmpStatusException.noAccess) // noAccess => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // According to RFC 1905: (my interpretation because it is not // really clear) The specified variable name exists - but the // variable does not exists and cannot be created under the // present circumstances (probably because the request specifies // another variable/value which is incompatible, or because the // value of some other variable in the MIB prevents the creation) // // Note that this error should never be raised in a GET context // but who knows? // else if (errorCode == SnmpStatusException.snmpRspInconsistentName) // inconsistentName => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // All the errors comprised between snmpRspWrongType and // snmpRspInconsistentValue concern values: so we're going // to assume the OID was correct, and reply with noSuchInstance. // // Note that this error should never be raised in a GET context // but who knows? // else if ((errorCode >= SnmpStatusException.snmpRspWrongType) && (errorCode <= SnmpStatusException.snmpRspInconsistentValue)) mappedErrorCode = SnmpStatusException.noSuchInstance; // We're going to assume the OID was correct, and reply // with noSuchInstance. // else if (errorCode == SnmpStatusException.readOnly) mappedErrorCode = SnmpStatusException.noSuchInstance; // For all other errors but genErr, we're going to reply with // noSuchObject // else if (errorCode != SnmpStatusException.snmpRspAuthorizationError && errorCode != SnmpStatusException.snmpRspGenErr) mappedErrorCode = SnmpStatusException.noSuchObject; // Only genErr will abort the GET and be returned as global // error. // return mappedErrorCode; }
Example 17
Source File: SnmpMibGroup.java From jdk8u-jdk with GNU General Public License v2.0 | 4 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); final Object data = handlers.getUserData(); if (depth >= length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noAccess); } long arc = oid[depth]; if (isNestedArc(arc)) { // This arc leads to a subgroup: delegates the search to the // method defined in SnmpMibOid super.findHandlingNode(varbind,oid,depth,handlers); } else if (isTable(arc)) { // This arc leads to a table: forward the search to the table. // Gets the table SnmpMibTable table = getTable(arc); // Forward the search to the table table.findHandlingNode(varbind,oid,depth+1,handlers); } else { // If it's not a variable, throws an exception validateVarId(arc, data); // The trailing .0 is missing in the OID if (depth+2 > length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // There are too many arcs left in the OID (there should remain // a single trailing .0) if (depth+2 < length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // The last trailing arc is not .0 if (oid[depth+1] != 0L) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // It's one of our variable, register this node. handlers.add(this,depth,varbind); } }
Example 18
Source File: SnmpMibGroup.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
@Override void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); final Object data = handlers.getUserData(); if (depth >= length) { // Nothing is left... the oid is not valid throw new SnmpStatusException(SnmpStatusException.noAccess); } long arc = oid[depth]; if (isNestedArc(arc)) { // This arc leads to a subgroup: delegates the search to the // method defined in SnmpMibOid super.findHandlingNode(varbind,oid,depth,handlers); } else if (isTable(arc)) { // This arc leads to a table: forward the search to the table. // Gets the table SnmpMibTable table = getTable(arc); // Forward the search to the table table.findHandlingNode(varbind,oid,depth+1,handlers); } else { // If it's not a variable, throws an exception validateVarId(arc, data); // The trailing .0 is missing in the OID if (depth+2 > length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // There are too many arcs left in the OID (there should remain // a single trailing .0) if (depth+2 < length) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // The last trailing arc is not .0 if (oid[depth+1] != 0L) { throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } // It's one of our variable, register this node. handlers.add(this,depth,varbind); } }
Example 19
Source File: SnmpMibTable.java From jdk1.8-source-analysis with Apache License 2.0 | 4 votes |
@Override final synchronized void findHandlingNode(SnmpVarBind varbind, long[] oid, int depth, SnmpRequestTree handlers) throws SnmpStatusException { final int length = oid.length; if (handlers == null) throw new SnmpStatusException(SnmpStatusException.snmpRspGenErr); if (depth >= length) throw new SnmpStatusException(SnmpStatusException.noAccess); if (oid[depth] != nodeId) throw new SnmpStatusException(SnmpStatusException.noAccess); if (depth+2 >= length) throw new SnmpStatusException(SnmpStatusException.noAccess); // Checks that the oid is valid // validateOid(oid,depth); // Gets the part of the OID that identifies the entry final SnmpOid entryoid = new SnmpEntryOid(oid, depth+2); // Finds the entry: false means that the entry does not exists final Object data = handlers.getUserData(); final boolean hasEntry = contains(entryoid, data); // Fails if the entry is not found and the table does not // not support creation. // We know that the entry does not exists if (isentry == false). if (!hasEntry) { if (!handlers.isCreationAllowed()) { // we're not doing a set throw new SnmpStatusException(SnmpStatusException.noSuchInstance); } else if (!isCreationEnabled()) // we're doing a set but creation is disabled. throw new SnmpStatusException(SnmpStatusException.snmpRspNoAccess); } final long var = oid[depth+1]; // Validate the entry id if (hasEntry) { // The entry already exists - validate the id validateVarEntryId(entryoid,var,data); } // Registers this node for the identified entry. // if (handlers.isSetRequest() && isRowStatus(entryoid,var,data)) // We only try to identify the RowStatus for SET operations // handlers.add(this,depth,entryoid,varbind,(!hasEntry),varbind); else handlers.add(this,depth,entryoid,varbind,(!hasEntry)); }
Example 20
Source File: SnmpRequestTree.java From jdk1.8-source-analysis with Apache License 2.0 | 4 votes |
public static int mapGetException(int errorStatus, int version) throws SnmpStatusException { final int errorCode = errorStatus; if (version == SnmpDefinitions.snmpVersionOne) return errorCode; int mappedErrorCode = errorCode; // Now take care of V2 errorCodes that can be stored // in the varbind itself: if (errorCode == SnmpStatusException.noSuchObject) // noSuchObject => noSuchObject mappedErrorCode = errorCode; else if (errorCode == SnmpStatusException.noSuchInstance) // noSuchInstance => noSuchInstance mappedErrorCode = errorCode; // Now we're going to try to transform every other // global code in either noSuchInstance or noSuchObject, // so that the get can return a partial result. // // Only noSuchInstance or noSuchObject can be stored // in the varbind itself. // // According to RFC 1905: noAccess is emitted when the // the access is denied because it is not in the MIB view... // else if (errorCode == SnmpStatusException.noAccess) // noAccess => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // According to RFC 1905: (my interpretation because it is not // really clear) The specified variable name exists - but the // variable does not exists and cannot be created under the // present circumstances (probably because the request specifies // another variable/value which is incompatible, or because the // value of some other variable in the MIB prevents the creation) // // Note that this error should never be raised in a GET context // but who knows? // else if (errorCode == SnmpStatusException.snmpRspInconsistentName) // inconsistentName => noSuchInstance mappedErrorCode = SnmpStatusException.noSuchInstance; // All the errors comprised between snmpRspWrongType and // snmpRspInconsistentValue concern values: so we're going // to assume the OID was correct, and reply with noSuchInstance. // // Note that this error should never be raised in a GET context // but who knows? // else if ((errorCode >= SnmpStatusException.snmpRspWrongType) && (errorCode <= SnmpStatusException.snmpRspInconsistentValue)) mappedErrorCode = SnmpStatusException.noSuchInstance; // We're going to assume the OID was correct, and reply // with noSuchInstance. // else if (errorCode == SnmpStatusException.readOnly) mappedErrorCode = SnmpStatusException.noSuchInstance; // For all other errors but genErr, we're going to reply with // noSuchObject // else if (errorCode != SnmpStatusException.snmpRspAuthorizationError && errorCode != SnmpStatusException.snmpRspGenErr) mappedErrorCode = SnmpStatusException.noSuchObject; // Only genErr will abort the GET and be returned as global // error. // return mappedErrorCode; }