View Javadoc
1   // NAME
2   //      $RCSfile: TrapPduv2.java,v $
3   // DESCRIPTION
4   //      [given below in javadoc format]
5   // DELTA
6   //      $Revision: 3.11 $
7   // CREATED
8   //      $Date: 2006/03/23 14:54:10 $
9   // COPYRIGHT
10  //      Westhawk Ltd
11  // TO DO
12  //
13  
14  /*
15   * Copyright (C) 2001 - 2006 by Westhawk Ltd
16   * <a href="www.westhawk.co.uk">www.westhawk.co.uk</a>
17   *
18   * Permission to use, copy, modify, and distribute this software
19   * for any purpose and without fee is hereby granted, provided
20   * that the above copyright notices appear in all copies and that
21   * both the copyright notice and this permission notice appear in
22   * supporting documentation.
23   * This software is provided "as is" without express or implied
24   * warranty.
25   * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
26   */
27  
28  package uk.co.westhawk.snmp.stack;
29  
30  /*-
31   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
32   * SNMP Java Client
33   * ჻჻჻჻჻჻
34   * Copyright 2023 MetricsHub, Westhawk
35   * ჻჻჻჻჻჻
36   * This program is free software: you can redistribute it and/or modify
37   * it under the terms of the GNU Lesser General Public License as
38   * published by the Free Software Foundation, either version 3 of the
39   * License, or (at your option) any later version.
40   *
41   * This program is distributed in the hope that it will be useful,
42   * but WITHOUT ANY WARRANTY; without even the implied warranty of
43   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
44   * GNU General Lesser Public License for more details.
45   *
46   * You should have received a copy of the GNU General Lesser Public
47   * License along with this program.  If not, see
48   * <http://www.gnu.org/licenses/lgpl-3.0.html>.
49   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
50   */
51  
52  /**
53   * This class represents the ASN SNMP v2c (and higher) Trap PDU object.
54   * This PDU is not supported in SNMPv1.
55   *
56   * <p>
57   * See <a href="http://www.ietf.org/rfc/rfc3416.txt">SNMPv2-PDU</a>;<br/>
58   * The variable bindings list contains the following pairs of object
59   * names and values:
60     <ul>
61        <li>sysUpTime.0 
62            (<a href="http://www.ietf.org/rfc/rfc3418.txt">SNMPv2-MIB</a>)
63        </li>
64        <li>snmpTrapOID.0: part of the trap group in the SNMPv2 MIB
65            (<a href="http://www.ietf.org/rfc/rfc3418.txt">SNMPv2-MIB</a>)
66        </li>
67        <li>If the OBJECTS clause is present in the corresponding
68            invocation of the macro NOTIFICATION-TYPE, then each corresponding
69            variable and its value are copied to the variable-bindings field.
70        </li>
71        <li>Additional variables may be included at the option of the agent.
72        </li>
73     </ul>
74   *
75   * <p>
76   * For SNMPv3: The sender of a trap PDU acts as the authoritative engine.
77   * </p>
78   *
79   * @see TrapPduv1
80   * @author <a href="mailto:snmp@westhawk.co.uk">Birgit Arkesteijn</a>
81   * @version $Revision: 3.11 $ $Date: 2006/03/23 14:54:10 $
82   */
83  public class TrapPduv2 extends Pdu {
84      private static final String version_id = "@(#)$Id: TrapPduv2.java,v 3.11 2006/03/23 14:54:10 birgit Exp $ Copyright Westhawk Ltd";
85  
86      /**
87       * Constructor.
88       *
89       * @param con The context (v2c or v3) of the PDU
90       * @throws IllegalArgumentException if the context version is
91       *                                  SNMPv1
92       */
93      public TrapPduv2(SnmpContextBasisFace con) {
94          super(con);
95          setMsgType(AsnObject.TRPV2_REQ_MSG);
96  
97          if (con.getVersion() == SnmpConstants.SNMP_VERSION_1) {
98              throw new IllegalArgumentException("A TrapPduv2"
99                      + " can only be sent with an SNMPv2c or SNMPv3 context."
100                     + " NOT with an SNMPv1 context!");
101         }
102     }
103 
104     /**
105      * The trap PDU does not get a response back. So it should be sent once.
106      *
107      */
108     void transmit() {
109         transmit(false);
110     }
111 
112     /**
113      * Returns the string representation of this object.
114      *
115      * @return The string of the PDU
116      */
117     public String toString() {
118         return super.toString(true);
119     }
120 
121     /**
122      * Has no meaning, since there is not response.
123      */
124     protected void new_value(int n, varbind res) {
125     }
126 
127     /**
128      * Has no meaning, since there is not response.
129      */
130     protected void tell_them() {
131     }
132 
133     /**
134      * Returns that this type of PDU is <em>not</em> expecting a response.
135      * This method is used in AbstractSnmpContext to help determine whether
136      * or not to start a thread that listens for a response when sending this
137      * PDU.
138      * The default is <em>false</em>.
139      *
140      * @return true if a response is expected, false if not.
141      * @since 4_14
142      */
143     protected boolean isExpectingResponse() {
144         return false;
145     }
146 
147 }