Class SnmpPduPacket

  • All Implemented Interfaces:
    java.lang.Cloneable, SnmpSyntax
    Direct Known Subclasses:
    SnmpPduBulk, SnmpPduRequest

    public abstract class SnmpPduPacket
    extends java.lang.Object
    implements SnmpSyntax, java.lang.Cloneable
    Base class for all Protocol Data Unit (PDU) implementations. The class defines methods to handle most v1 and v2 implementation of SNMP with only minor work needed by the derived class.
    Author:
    Brian Weaver
    See Also:
    SnmpPduRequest, SnmpPduBulk
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int ErrAuthorizationError
      The authorization failed.
      static int ErrBadValue
      If the object type does not match the object value in the agent's tables.
      static int ErrCommitFailed
      Unable to commit the required values.
      static int ErrGenError
      A generic SNMPv1 error occured.
      static int ErrInconsistentName
      The passed object identifier is not consistent.
      static int ErrInconsistentValue
      The specified value are not consistant.
      static int ErrNoAccess
      The specified SET request could not access the specified instance.
      static int ErrNoCreation
      The manager does not have the permission to create the specified object(s).
      static int ErrNoError
      No error occured in the request.
      static int ErrNoSuchName
      There was no such object identifier defined in the agent's tables.
      static int ErrNotWritable
      The specified instance or table is not writable
      static int ErrReadOnly
      Attempting to set a read-only object in the agent's tables.
      static int ErrResourceUnavailable
      The requested resource are not available.
      static int ErrTooBig
      The PDU was too large for the agent to process
      static int ErrUndoFailed
      Unable to perform the undo request
      static int ErrWrongEncoding
      The specified object is not correctly encoded.
      static int ErrWrongLength
      The specified object is not the correct length.
      static int ErrWrongType
      The specified object is not the correct type.
      static int ErrWrongValue
      The specified object doe not have the correct value.
      static int GET
      Defines a SNMPv1 Get Request PDU message.
      static int GETBULK
      Defines a SNMPv2 Get Bulk Request message.
      static int GETNEXT
      Defines a SNMPv1 Get Next Request PDU message.
      static int INFORM
      Defines a SNMPv2 Inform Request message
      protected int m_errIndex
      The error index in a normal pdu, it is used as the maximum repititions in the get bulk pdu.
      protected int m_errStatus
      The error status in a normal pdu, is is used as the non-repeaters in the getbulk.
      static int REPORT
      Defines a SNMPv2 Report message.
      static int RESPONSE
      Defines a SNMPv1 Response PDU message.
      static int SET
      Defines a SNMPv1 PDU Set Request message.
      static int V2TRAP
      Defines a SNMPv2 Trap message
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected SnmpPduPacket()
      Default class constructor.
      protected SnmpPduPacket​(int command)
      creates a new pdu with the command set to the passed value.
      protected SnmpPduPacket​(int command, SnmpVarBind[] vars)
      Creates a new pdu with the spcified command and the list of variables.
      protected SnmpPduPacket​(SnmpPduPacket second)
      Class copy constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addVarBind​(SnmpVarBind vb)
      Adds a new variable to the protocol data unit.
      void addVarBindAt​(int ndx, SnmpVarBind vb)
      Adds a variable at a specific index.
      abstract java.lang.Object clone()
      Defined for derived classes to return a duplicate of self.
      int decodeASN​(byte[] buf, int offset, AsnEncoder encoder)
      Decodes the protocol data unit from the passed buffer.
      abstract SnmpSyntax duplicate()
      Defined for derived classes to return a duplicate of self.
      int encodeASN​(byte[] buf, int offset, AsnEncoder encoder)
      Encodes the protocol data unit using the passed encoder and stores the results in the passed buffer.
      int getCommand()
      Returns the type of PDU.
      int getLength()
      /** Returns the number of variables in the data unit.
      SnmpPeer getPeer()
      Returns the current peer for this packet.
      int getRequestId()
      Returns the current request id for this packet.
      SnmpVarBind getVarBindAt​(int ndx)
      Retrieves the variable at the specific index.
      static int nextSequence()
      Use to sequence the all pdu request across the entire library.
      SnmpVarBind removeVarBindAt​(int ndx)
      Removes the variable as defined by the index
      void setCommand​(int cmd)
      Sets the PDU's current command
      void setPeer​(SnmpPeer peer)
      Sets the Peer for the Packet
      void setRequestId​(int reqid)
      Sets the protocol data unit's sequence identifer
      void setVarBindAt​(int ndx, SnmpVarBind vb)
      Sets the specific variable at the requested location.
      SnmpVarBind[] toVarBindArray()
      Returns a list of all the variables managed by this protocol data unit.
      byte typeId()
      Returns the PDU commmand in an 8-bit format
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • m_errStatus

        protected int m_errStatus
        The error status in a normal pdu, is is used as the non-repeaters in the getbulk.
        See Also:
        SnmpPduRequest, SnmpPduBulk
      • m_errIndex

        protected int m_errIndex
        The error index in a normal pdu, it is used as the maximum repititions in the get bulk pdu.
        See Also:
        SnmpPduRequest, SnmpPduBulk
      • GET

        public static final int GET
        Defines a SNMPv1 Get Request PDU message.
        See Also:
        Constant Field Values
      • GETNEXT

        public static final int GETNEXT
        Defines a SNMPv1 Get Next Request PDU message.
        See Also:
        Constant Field Values
      • RESPONSE

        public static final int RESPONSE
        Defines a SNMPv1 Response PDU message.
        See Also:
        Constant Field Values
      • SET

        public static final int SET
        Defines a SNMPv1 PDU Set Request message. The set request uses the write-only string from the session. All others use the read-only community string.
        See Also:
        Constant Field Values
      • GETBULK

        public static final int GETBULK
        Defines a SNMPv2 Get Bulk Request message.
        See Also:
        Constant Field Values
      • INFORM

        public static final int INFORM
        Defines a SNMPv2 Inform Request message
        See Also:
        Constant Field Values
      • REPORT

        public static final int REPORT
        Defines a SNMPv2 Report message.
        See Also:
        Constant Field Values
      • ErrNoError

        public static final int ErrNoError
        No error occured in the request. Also known as a successful request.
        See Also:
        Constant Field Values
      • ErrTooBig

        public static final int ErrTooBig
        The PDU was too large for the agent to process
        See Also:
        Constant Field Values
      • ErrNoSuchName

        public static final int ErrNoSuchName
        There was no such object identifier defined in the agent's tables.
        See Also:
        Constant Field Values
      • ErrBadValue

        public static final int ErrBadValue
        If the object type does not match the object value in the agent's tables.
        See Also:
        Constant Field Values
      • ErrReadOnly

        public static final int ErrReadOnly
        Attempting to set a read-only object in the agent's tables.
        See Also:
        Constant Field Values
      • ErrGenError

        public static final int ErrGenError
        A generic SNMPv1 error occured.
        See Also:
        Constant Field Values
      • ErrNoAccess

        public static final int ErrNoAccess
        The specified SET request could not access the specified instance.
        See Also:
        Constant Field Values
      • ErrWrongType

        public static final int ErrWrongType
        The specified object is not the correct type.
        See Also:
        Constant Field Values
      • ErrWrongLength

        public static final int ErrWrongLength
        The specified object is not the correct length.
        See Also:
        Constant Field Values
      • ErrWrongEncoding

        public static final int ErrWrongEncoding
        The specified object is not correctly encoded.
        See Also:
        Constant Field Values
      • ErrWrongValue

        public static final int ErrWrongValue
        The specified object doe not have the correct value.
        See Also:
        Constant Field Values
      • ErrNoCreation

        public static final int ErrNoCreation
        The manager does not have the permission to create the specified object(s).
        See Also:
        Constant Field Values
      • ErrInconsistentValue

        public static final int ErrInconsistentValue
        The specified value are not consistant.
        See Also:
        Constant Field Values
      • ErrResourceUnavailable

        public static final int ErrResourceUnavailable
        The requested resource are not available.
        See Also:
        Constant Field Values
      • ErrCommitFailed

        public static final int ErrCommitFailed
        Unable to commit the required values.
        See Also:
        Constant Field Values
      • ErrUndoFailed

        public static final int ErrUndoFailed
        Unable to perform the undo request
        See Also:
        Constant Field Values
      • ErrAuthorizationError

        public static final int ErrAuthorizationError
        The authorization failed.
        See Also:
        Constant Field Values
      • ErrNotWritable

        public static final int ErrNotWritable
        The specified instance or table is not writable
        See Also:
        Constant Field Values
      • ErrInconsistentName

        public static final int ErrInconsistentName
        The passed object identifier is not consistent.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SnmpPduPacket

        protected SnmpPduPacket()
        Default class constructor. Initialzies all primitive members to zero, and allocates a new array list for the variables.
      • SnmpPduPacket

        protected SnmpPduPacket​(SnmpPduPacket second)
        Class copy constructor. Constructs the object with all the same values as the passed packet. The variables are duplicated into a new array so that changes to the source pdu will not affect the newly create pdu.
        Parameters:
        second - The source pdu to copy values from.
      • SnmpPduPacket

        protected SnmpPduPacket​(int command)
        creates a new pdu with the command set to the passed value.
        Parameters:
        command - The type of pdu packet.
      • SnmpPduPacket

        protected SnmpPduPacket​(int command,
                                SnmpVarBind[] vars)
        Creates a new pdu with the spcified command and the list of variables.
        Parameters:
        command - The type of pdu packet.
        vars - The variable list for the pdu.
    • Method Detail

      • nextSequence

        public static int nextSequence()
        Use to sequence the all pdu request across the entire library. If the sequence id is equal to zero then a random number generator is created and is used to seed the sequence.
        Returns:
        The new sequnce identifier
      • getCommand

        public int getCommand()
        Returns the type of PDU.
        Returns:
        The current PDU command
      • setCommand

        public void setCommand​(int cmd)
        Sets the PDU's current command
        Parameters:
        cmd - The new command.
      • getRequestId

        public int getRequestId()
        Returns the current request id for this packet.
        Returns:
        The sequence identifier
      • setPeer

        public void setPeer​(SnmpPeer peer)
        Sets the Peer for the Packet
        Parameters:
        peer - The peer of this packet
      • getPeer

        public SnmpPeer getPeer()
        Returns the current peer for this packet.
        Returns:
        The peer or null, if its a own request
      • setRequestId

        public void setRequestId​(int reqid)
        Sets the protocol data unit's sequence identifer
        Parameters:
        reqid - The new request id
      • getLength

        public int getLength()
        /** Returns the number of variables in the data unit.
        Returns:
        The number of variables.
      • addVarBind

        public void addVarBind​(SnmpVarBind vb)
        Adds a new variable to the protocol data unit. The variable is added at the end of the list
        Parameters:
        vb - The new variable to add
      • addVarBindAt

        public void addVarBindAt​(int ndx,
                                 SnmpVarBind vb)
        Adds a variable at a specific index.
        Parameters:
        ndx - The index of the variable
        vb - The new variable.
      • getVarBindAt

        public SnmpVarBind getVarBindAt​(int ndx)
        Retrieves the variable at the specific index.
        Parameters:
        ndx - The index of the variable
        Returns:
        The variable at the specified index
      • setVarBindAt

        public void setVarBindAt​(int ndx,
                                 SnmpVarBind vb)
        Sets the specific variable at the requested location.
        Parameters:
        ndx - The location to set
        vb - The new variable
      • removeVarBindAt

        public SnmpVarBind removeVarBindAt​(int ndx)
        Removes the variable as defined by the index
        Parameters:
        ndx - The index of the variable to remove
        Returns:
        The removed variable
      • toVarBindArray

        public SnmpVarBind[] toVarBindArray()
        Returns a list of all the variables managed by this protocol data unit.
        Returns:
        An array of the internal variable.
      • typeId

        public byte typeId()
        Returns the PDU commmand in an 8-bit format
        Specified by:
        typeId in interface SnmpSyntax
        Returns:
        The pdu command
      • encodeASN

        public int encodeASN​(byte[] buf,
                             int offset,
                             AsnEncoder encoder)
                      throws AsnEncodingException
        Encodes the protocol data unit using the passed encoder and stores the results in the passed buffer. An exception is thrown if an error occurs with the encoding of the information.
        Specified by:
        encodeASN in interface SnmpSyntax
        Parameters:
        buf - The buffer to write the encoded information.
        offset - The offset to start writing information
        encoder - The encoder object.
        Returns:
        The offset of the byte immediantly after the last encoded byte.
        Throws:
        AsnEncodingException - Thrown if the encoder finds an error in the buffer.
      • decodeASN

        public int decodeASN​(byte[] buf,
                             int offset,
                             AsnEncoder encoder)
                      throws AsnDecodingException
        Decodes the protocol data unit from the passed buffer. If an error occurs during the decoding sequence then an AsnDecodingException is thrown by the method. The value is decoded using the AsnEncoder passed to the object.
        Specified by:
        decodeASN in interface SnmpSyntax
        Parameters:
        buf - The encode buffer
        offset - The offset byte to begin decoding
        encoder - The decoder object.
        Returns:
        The index of the byte immediantly after the last decoded byte of information.
        Throws:
        AsnDecodingException - Thrown by the encoder if an error occurs trying to decode the data buffer.
      • duplicate

        public abstract SnmpSyntax duplicate()
        Defined for derived classes to return a duplicate of self. This method not defined.
        Specified by:
        duplicate in interface SnmpSyntax
      • clone

        public abstract java.lang.Object clone()
        Defined for derived classes to return a duplicate of self. This method not defined.
        Overrides:
        clone in class java.lang.Object