Package org.snmp4j
Class PDU
java.lang.Object
org.snmp4j.PDU
- All Implemented Interfaces:
 Serializable,BERSerializable
The 
PDU class represents a SNMP protocol data unit. The PDU
 version supported by the BER decoding and encoding methods of this class
 is v2.
 The default PDU type is GET.
- Version:
 - 2.0
 - Author:
 - Frank Fock
 - See Also:
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intUnauthorized access, see error index.static final intBad value in variable binding, see error index.static final intUnable to commit a value, see error index.protected Integer32protected Integer32static final intAn unspecific error caused by a variable binding, see error index.static final intDenotes a get PDU.static final intDenotes a SNMPv2c/v3 getbulk PDU.static final intDenotes a getnext (search) PDU.static final intThe specified object does not exists and presently it cannot be created, see error index.static final intThe variable binding's value is presently inconsistent with the current state of the target object, see error index.static final intDenotes a SNMPv2c/v3 inform PDU (unprecisely also known as a confirmed notification).static final intThe variable binding is not accessible by the current MIB view, see error index.static final intThe specified object does not exists and cannot be created, see error index.static final intOperation success (no error).static final intNo such variable binding name, see error index.static final intDenotes a SNMPv2c/v3 notification PDU (undistinguishable from#NOTIFICATION).static final intThe variable's value cannot be modified, see error index.static final intThe variable binding is read-only, see error index.static final intDenotes a SNMPv3 report PDU.protected Integer32static final intThe resource needed to assign a variable binding's value is presently unavailable, see error index.static final intDenotes a response PDU.static final intDenotes a set PDU.static final intPDU encoding is too big for the transport used.static final intDenotes a SNMPv2c/v3 notification PDU (undistinguishable from#TRAP).protected intstatic final intUnable to undo a committed value, see error index.static final intDenotes a SNMPv1 trap PDU.protected Vector<VariableBinding>static final intThe variable binding's value has the wrong encoding, see error index.static final intThe variable binding's value has the wrong length, see error index.static final intThe variable binding's value has the wrong type, see error index.static final intThe variable binding's value has a value that could under no circumstances be assigned, see error index. - 
Constructor Summary
ConstructorsConstructorDescriptionPDU()Default constructor.PDU(int pduType, List<? extends VariableBinding> vbs) Constructs a new PDU from a type and a list ofVariableBindinginstances.Copy constructor which creates a deep copy (clone) of the other PDU. - 
Method Summary
Modifier and TypeMethodDescriptionvoidadd(VariableBinding vb) Adds a variable binding to this PDU.voidaddAll(List<? extends VariableBinding> vbs) Adds a list of variable bindings to this PDU (seeadd(VariableBinding vb)).voidaddAll(VariableBinding[] vbs) Adds an array of variable bindings to this PDU (seeadd(VariableBinding vb)).voidaddAllOIDs(VariableBinding[] vbs) Adds newVariableBindingseach with the OID of the corresponding variable binding of the supplied array to this PDU (seeaddOID(VariableBinding vb)).voidAdds a new variable binding to this PDU by using the OID of the suppliedVariableBinding.voidclear()Removes all variable bindings from the PDU and sets the request ID to zero.clone()voiddecodeBER(BERInputStream inputStream) Decodes aVariablefrom anInputStream.voidencodeBER(OutputStream outputStream) Encodes aVariableto anOutputStream.booleanget(int index) Gets the variable binding at the specified position.intReturns the length of thisBERSerializableobject in bytes when encoded according to the Basic Encoding Rules (BER).static intgetBERLength(List<? extends VariableBinding> variableBindings) Computes the length in bytes of the BER encoded variable bindings without including the length of BER sequence length.intReturns the length of the payload of thisBERSerializableobject in bytes when encoded according to the Basic Encoding Rules (BER).protected intgetBindingList(OID prefix) Gets a list ofVariableBindings whose OID prefix matches the supplied prefix.intGets the error index.intGets the error status of the PDU.Gets a textual description of the error status.intGets the maximum repetitions of repeatable variable bindings in GETBULK requests.intGets the number of non repeater variable bindings in a GETBULK PDU.Gets the request ID associated with this PDU.intgetType()Gets the PDU type.static intgetTypeFromString(String type) Gets the PDU type identifier for a string representation of the type.static StringgetTypeString(int type) Gets a string representation of the supplied PDU type.getVariable(OID prefix) Gets the first variable whose OID starts with the specified OID.Vector<? extends VariableBinding>Gets the variable binding vector.inthashCode()booleanChecks whether this PDU is a confirmed class PDU.booleanChecks whether this PDU is aRESPONSEor [@link PDU#REPORT}.voidremove(int index) Removes the variable binding at the supplied position.set(int index, VariableBinding vb) Sets the variable binding at the specified position.voidsetErrorIndex(int errorIndex) Sets the error index.voidsetErrorStatus(int errorStatus) Sets the error status of the PDU.voidsetMaxRepetitions(int maxRepetitions) Sets the maximum repetitions of repeatable variable bindings in GETBULK requests.voidsetNonRepeaters(int nonRepeaters) Sets the number of non repeater variable bindings in a GETBULK PDU.voidsetRequestID(Integer32 requestID) Sets the request ID for this PDU.voidsetType(int type) Sets the PDU type.voidsetVariableBindings(List<? extends VariableBinding> vbs) Sets theVariableBindings for this PDU.intsize()Gets the number of variable bindings in the PDU.toArray()Returns an array with the variable bindings of this PDU.static StringtoErrorStatusText(int errorStatus) Returns textual description for the supplied error status value.toString()Returns a string representation of the object.voidtrim()Remove the last variable binding from the PDU, if such an element exists. 
- 
Field Details
- 
GET
public static final int GETDenotes a get PDU.- See Also:
 
 - 
GETNEXT
public static final int GETNEXTDenotes a getnext (search) PDU.- See Also:
 
 - 
RESPONSE
public static final int RESPONSEDenotes a response PDU.- See Also:
 
 - 
SET
public static final int SETDenotes a set PDU.- See Also:
 
 - 
V1TRAP
public static final int V1TRAPDenotes a SNMPv1 trap PDU. This type can only be used with instances of thePDUv1class.- See Also:
 
 - 
GETBULK
public static final int GETBULKDenotes a SNMPv2c/v3 getbulk PDU.- See Also:
 
 - 
INFORM
public static final int INFORMDenotes a SNMPv2c/v3 inform PDU (unprecisely also known as a confirmed notification).- See Also:
 
 - 
TRAP
public static final int TRAPDenotes a SNMPv2c/v3 notification PDU (undistinguishable from#TRAP).- See Also:
 
 - 
NOTIFICATION
public static final int NOTIFICATIONDenotes a SNMPv2c/v3 notification PDU (undistinguishable from#NOTIFICATION).- See Also:
 
 - 
REPORT
public static final int REPORTDenotes a SNMPv3 report PDU.- See Also:
 
 - 
noError
public static final int noErrorOperation success (no error).- See Also:
 
 - 
tooBig
public static final int tooBigPDU encoding is too big for the transport used.- See Also:
 
 - 
noSuchName
public static final int noSuchNameNo such variable binding name, see error index.- See Also:
 
 - 
badValue
public static final int badValueBad value in variable binding, see error index.- See Also:
 
 - 
readOnly
public static final int readOnlyThe variable binding is read-only, see error index.- See Also:
 
 - 
genErr
public static final int genErrAn unspecific error caused by a variable binding, see error index.- See Also:
 
 - 
noAccess
public static final int noAccessThe variable binding is not accessible by the current MIB view, see error index.- See Also:
 
 - 
wrongType
public static final int wrongTypeThe variable binding's value has the wrong type, see error index.- See Also:
 
 - 
wrongLength
public static final int wrongLengthThe variable binding's value has the wrong length, see error index.- See Also:
 
 - 
wrongValue
public static final int wrongValueThe variable binding's value has a value that could under no circumstances be assigned, see error index.- See Also:
 
 - 
wrongEncoding
public static final int wrongEncodingThe variable binding's value has the wrong encoding, see error index.- See Also:
 
 - 
noCreation
public static final int noCreationThe specified object does not exists and cannot be created, see error index.- See Also:
 
 - 
inconsistentValue
public static final int inconsistentValueThe variable binding's value is presently inconsistent with the current state of the target object, see error index.- See Also:
 
 - 
commitFailed
public static final int commitFailedUnable to commit a value, see error index.- See Also:
 
 - 
undoFailed
public static final int undoFailedUnable to undo a committed value, see error index.- See Also:
 
 - 
authorizationError
public static final int authorizationErrorUnauthorized access, see error index.- See Also:
 
 - 
notWritable
public static final int notWritableThe variable's value cannot be modified, see error index.- See Also:
 
 - 
inconsistentName
public static final int inconsistentNameThe specified object does not exists and presently it cannot be created, see error index.- See Also:
 
 - 
variableBindings
 - 
errorStatus
 - 
errorIndex
 - 
requestID
 - 
type
protected int type 
 - 
 - 
Constructor Details
- 
PDU
public PDU()Default constructor. - 
PDU
Copy constructor which creates a deep copy (clone) of the other PDU.- Parameters:
 other- thePDUto copy from.
 - 
PDU
Constructs a new PDU from a type and a list ofVariableBindinginstances. The list will not be referenced, instead a deep copy of the variable bindings is executed (each variable binding will be cloned).- Parameters:
 pduType- the PDU type.vbs- the variable bindings.- Since:
 - 2.2.4
 
 
 - 
 - 
Method Details
- 
add
Adds a variable binding to this PDU. ANullPointerExceptionis thrown ifVariableBindingor itsVariableisnull.- Parameters:
 vb- aVariableBindinginstance.
 - 
addOID
Adds a new variable binding to this PDU by using the OID of the suppliedVariableBinding. The value portion is thus set tonull. This method should be used for GET type requests. For SET, TRAP and INFORM requests, theadd(org.snmp4j.smi.VariableBinding)method should be used instead.- Parameters:
 vb- aVariableBindinginstance.- Since:
 - 1.8
 
 - 
addAll
Adds an array of variable bindings to this PDU (seeadd(VariableBinding vb)).- Parameters:
 vbs- an array ofVariableBindinginstances. The instances in the array will be appended to the current list of variable bindings in the PDU.
 - 
addAll
Adds a list of variable bindings to this PDU (seeadd(VariableBinding vb)).- Parameters:
 vbs- a list ofVariableBindinginstances. The instances in the list will be appended to the current list of variable bindings in the PDU.- Since:
 - 2.2.4
 
 - 
addAllOIDs
Adds newVariableBindingseach with the OID of the corresponding variable binding of the supplied array to this PDU (seeaddOID(VariableBinding vb)).- Parameters:
 vbs- an array ofVariableBindinginstances. For each instance in the supplied array, a new VariableBinding created bynew VariableBinding(OID)will be appended to the current list of variable bindings in the PDU.- Since:
 - 1.8
 
 - 
get
Gets the variable binding at the specified position.- Parameters:
 index- a zero based positive integer (0 <= index < {@link #size()})- Returns:
 - a VariableBinding instance. If 
indexis out of bounds an exception is thrown. 
 - 
getVariable
Gets the first variable whose OID starts with the specified OID.- Parameters:
 prefix- the searchOID.- Returns:
 - the 
Variableof the firstVariableBindingwhose prefix matchesoid. If no such element could be found,nullis returned. - Since:
 - 2.0
 
 - 
getBindingList
Gets a list ofVariableBindings whose OID prefix matches the supplied prefix.- Parameters:
 prefix- the searchOID.- Returns:
 - a List of all 
VariableBindings whose prefix matchesoid. If no such element could be found, an empty List is returned. 
 - 
set
Sets the variable binding at the specified position.- Parameters:
 index- a zero based positive integer (0 <= index <size()) Ifindexis out of bounds an exception is thrown.vb- a VariableBinding instance (nullis not allowed).- Returns:
 - the variable binding that has been replaced.
 
 - 
remove
public void remove(int index) Removes the variable binding at the supplied position.- Parameters:
 index- a position >= 0 and <size().
 - 
size
public int size()Gets the number of variable bindings in the PDU.- Returns:
 - the size of the PDU.
 
 - 
getVariableBindings
Gets the variable binding vector.- Returns:
 - the internal 
Vectorcontaining the PDU's variable bindings. 
 - 
setVariableBindings
Sets theVariableBindings for this PDU.- Parameters:
 vbs- a list ofVariableBindinginstances which must not be null.- Since:
 - 2.1
 
 - 
trim
public void trim()Remove the last variable binding from the PDU, if such an element exists. - 
setErrorStatus
public void setErrorStatus(int errorStatus) Sets the error status of the PDU.- Parameters:
 errorStatus- a SNMP error status.- See Also:
 
 - 
getErrorStatus
public int getErrorStatus()Gets the error status of the PDU.- Returns:
 - a SNMP error status.
 - See Also:
 
 - 
getErrorStatusText
Gets a textual description of the error status.- Returns:
 - a String containing an element of the
    
SnmpConstants.SNMP_ERROR_MESSAGESarray for a valid error status. "Unknown error: <errorStatusNumber>" is returned for any other value. 
 - 
toErrorStatusText
Returns textual description for the supplied error status value.- Parameters:
 errorStatus- an error status.- Returns:
 - a String containing an element of the
    
SnmpConstants.SNMP_ERROR_MESSAGESarray for a valid error status. "Unknown error: <errorStatusNumber>" is returned for any other value. - Since:
 - 1.7
 
 - 
setErrorIndex
public void setErrorIndex(int errorIndex) Sets the error index.- Parameters:
 errorIndex- an integer value >= 0 where 1 denotes the first variable binding.
 - 
getErrorIndex
public int getErrorIndex()Gets the error index.- Returns:
 - an integer value >= 0 where 1 denotes the first variable binding.
 
 - 
isConfirmedPdu
public boolean isConfirmedPdu()Checks whether this PDU is a confirmed class PDU.- Returns:
 - boolean
 
 - 
isResponsePdu
public boolean isResponsePdu()Checks whether this PDU is aRESPONSEor [@link PDU#REPORT}. - 
getBERLength
public int getBERLength()Description copied from interface:BERSerializableReturns the length of thisBERSerializableobject in bytes when encoded according to the Basic Encoding Rules (BER).- Specified by:
 getBERLengthin interfaceBERSerializable- Returns:
 - the BER encoded length of this variable.
 
 - 
getBERPayloadLength
public int getBERPayloadLength()Description copied from interface:BERSerializableReturns the length of the payload of thisBERSerializableobject in bytes when encoded according to the Basic Encoding Rules (BER).- Specified by:
 getBERPayloadLengthin interfaceBERSerializable- Returns:
 - the BER encoded length of this variable.
 
 - 
decodeBER
Description copied from interface:BERSerializableDecodes aVariablefrom anInputStream.- Specified by:
 decodeBERin interfaceBERSerializable- Parameters:
 inputStream- anInputStreamcontaining a BER encoded byte stream.- Throws:
 IOException- if the stream could not be decoded by using BER rules.
 - 
getBERLength
Computes the length in bytes of the BER encoded variable bindings without including the length of BER sequence length.- Parameters:
 variableBindings- a list of variable bindings.- Returns:
 - the length in bytes of the BER encoded VB list.
 
 - 
getBERPayloadLengthPDU
protected int getBERPayloadLengthPDU() - 
encodeBER
Description copied from interface:BERSerializableEncodes aVariableto anOutputStream.- Specified by:
 encodeBERin interfaceBERSerializable- Parameters:
 outputStream- anOutputStream.- Throws:
 IOException- if an error occurs while writing to the stream.
 - 
clear
public void clear()Removes all variable bindings from the PDU and sets the request ID to zero. This can be used to reuse a PDU for another request. - 
setType
public void setType(int type) Sets the PDU type.- Parameters:
 type- the type of the PDU (e.g. GETNEXT, SET, etc.)
 - 
getType
public int getType()Gets the PDU type. The default isGETNEXT.- Returns:
 - the PDU's type.
 
 - 
clone
 - 
getRequestID
Gets the request ID associated with this PDU.- Returns:
 - an 
Integer32instance. 
 - 
setRequestID
Sets the request ID for this PDU. When the request ID is not set or set to zero, the message processing model will generate a unique request ID for thePDUwhen sent.- Parameters:
 requestID- a unique request ID.
 - 
getTypeString
Gets a string representation of the supplied PDU type.- Parameters:
 type- a PDU type.- Returns:
 - a string representation of 
type, for example "GET". 
 - 
getTypeFromString
Gets the PDU type identifier for a string representation of the type.- Parameters:
 type- the string representation of a PDU type:GET, GETNEXT, GETBULK, SET, INFORM, RESPONSE, REPORT, TRAP, V1TRAP).- Returns:
 - the corresponding PDU type constant, or 
Integer.MIN_VALUEof the supplied type is unknown. 
 - 
toString
Returns a string representation of the object. - 
getMaxRepetitions
public int getMaxRepetitions()Gets the maximum repetitions of repeatable variable bindings in GETBULK requests.- Returns:
 - an integer value >= 0.
 
 - 
setMaxRepetitions
public void setMaxRepetitions(int maxRepetitions) Sets the maximum repetitions of repeatable variable bindings in GETBULK requests.- Parameters:
 maxRepetitions- an integer value >= 0.
 - 
getNonRepeaters
public int getNonRepeaters()Gets the number of non repeater variable bindings in a GETBULK PDU.- Returns:
 - an integer value >= 0 and <= 
size() 
 - 
setNonRepeaters
public void setNonRepeaters(int nonRepeaters) Sets the number of non repeater variable bindings in a GETBULK PDU.- Parameters:
 nonRepeaters- an integer value >= 0 and <=size()
 - 
toArray
Returns an array with the variable bindings of this PDU.- Returns:
 - an array of 
VariableBindinginstances of this PDU in the same order as in the PDU. 
 - 
hashCode
public int hashCode() - 
equals
 
 -