1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package uk.co.westhawk.snmp.stack;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 import java.util.*;
53 import java.io.*;
54 import java.net.*;
55
56 import uk.co.westhawk.snmp.util.*;
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 public class TrapPduv1 extends Pdu {
74 private static final String version_id = "@(#)$Id: TrapPduv1.java,v 3.14 2007/10/17 10:44:09 birgita Exp $ Copyright Westhawk Ltd";
75
76 private String enterprise;
77 private byte[] IpAddress;
78 private int generic_trap;
79 private int specific_trap;
80 private long timeTicks;
81
82 private final static String[] genericTrapStrings = {
83 "Cold Start",
84 "Warm Start",
85 "Link Down",
86 "Link Up",
87 "Authentication Failure",
88 "EGP Neighbor Loss",
89 "Enterprise Specific",
90 };
91
92
93
94
95
96
97
98 public TrapPduv1(SnmpContext con) {
99 super(con);
100 setMsgType(AsnObject.TRP_REQ_MSG);
101
102 generic_trap = AsnObject.SNMP_TRAP_WARMSTART;
103 }
104
105
106
107
108
109
110
111 public TrapPduv1(SnmpContextPool con) {
112 super(con);
113 setMsgType(AsnObject.TRP_REQ_MSG);
114
115 generic_trap = AsnObject.SNMP_TRAP_WARMSTART;
116 }
117
118
119
120
121
122 public void setEnterprise(String var) {
123 enterprise = var;
124 }
125
126
127
128
129 public String getEnterprise() {
130 return enterprise;
131 }
132
133
134
135
136 public void setIpAddress(byte[] var) {
137 IpAddress = var;
138 }
139
140
141
142
143 public byte[] getIpAddress() {
144 return IpAddress;
145 }
146
147
148
149
150
151
152
153
154
155
156
157
158 public void setGenericTrap(int var) {
159 generic_trap = var;
160 }
161
162
163
164
165 public int getGenericTrap() {
166 return generic_trap;
167 }
168
169
170
171
172
173
174
175 public String getGenericTrapString() {
176 String trapStr = "";
177 if (generic_trap > -1 && generic_trap < genericTrapStrings.length) {
178 trapStr = genericTrapStrings[generic_trap];
179 }
180 return trapStr;
181 }
182
183
184
185
186 public void setSpecificTrap(int var) {
187 specific_trap = var;
188 }
189
190
191
192
193 public int getSpecificTrap() {
194 return specific_trap;
195 }
196
197
198
199
200
201
202
203
204
205
206
207
208
209 public void setTimeTicks(long var) {
210 timeTicks = var;
211 }
212
213
214
215
216
217
218 public long getTimeTicks() {
219 return timeTicks;
220 }
221
222
223
224
225
226
227
228
229 public boolean send() throws IOException, PduException {
230 if (added == false) {
231
232
233 added = context.addPdu(this);
234 }
235 Enumeration vbs = reqVarbinds.elements();
236 encodedPacket = ((SnmpContext) context).encodePacket(msg_type, enterprise,
237 IpAddress, generic_trap, specific_trap, timeTicks, vbs);
238 addToTrans();
239 return added;
240 }
241
242
243
244
245 void transmit() {
246 transmit(false);
247 }
248
249
250
251
252
253
254 public String toString() {
255 String iPAddressStr = "null";
256 if (IpAddress != null) {
257 iPAddressStr = (new AsnOctets(IpAddress)).toIpAddress();
258 }
259 StringBuffer buffer = new StringBuffer(getClass().getName());
260 buffer.append("[");
261 buffer.append("context=").append(context);
262 buffer.append(", reqId=").append(getReqId());
263 buffer.append(", msgType=0x").append(SnmpUtilities.toHex(msg_type));
264 buffer.append(", enterprise=").append(enterprise);
265 buffer.append(", IpAddress=").append(iPAddressStr);
266 buffer.append(", generic_trap=").append(getGenericTrapString());
267 buffer.append(", specific_trap=").append(specific_trap);
268 buffer.append(", timeTicks=").append(timeTicks);
269
270 buffer.append(", reqVarbinds=");
271 if (reqVarbinds != null) {
272 int sz = reqVarbinds.size();
273 buffer.append("[");
274 for (int i = 0; i < sz; i++) {
275 varbind var = (varbind) reqVarbinds.elementAt(i);
276 buffer.append(var.toString()).append(", ");
277 }
278 buffer.append("]");
279 } else {
280 buffer.append("null");
281 }
282
283 buffer.append(", respVarbinds=");
284 if (respVarbinds != null) {
285 int sz = respVarbinds.size();
286 buffer.append("[");
287 for (int i = 0; i < sz; i++) {
288 varbind var = (varbind) respVarbinds.elementAt(i);
289 buffer.append(var.toString()).append(", ");
290 }
291 buffer.append("]");
292 } else {
293 buffer.append("null");
294 }
295
296 buffer.append("]");
297 return buffer.toString();
298 }
299
300
301
302
303
304
305 void fillin(AsnTrapPduv1Sequence seq) {
306 if (seq != null) {
307 try {
308 AsnSequence varBind = seq.getVarBind();
309 int size = varBind.getObjCount();
310 respVarbinds = new Vector(size, 1);
311 for (int n = 0; n < size; n++) {
312 Object obj = varBind.getObj(n);
313 if (obj instanceof AsnSequence) {
314 AsnSequence varSeq = (AsnSequence) obj;
315 try {
316 varbind vb = new varbind(varSeq);
317 respVarbinds.addElement(vb);
318 } catch (IllegalArgumentException exc) {
319 }
320 }
321 }
322
323 setEnterprise(seq.getEnterprise());
324 setIpAddress(seq.getIPAddress());
325 setGenericTrap(seq.getGenericTrap());
326 setSpecificTrap(seq.getSpecificTrap());
327 setTimeTicks(seq.getTimeTicks());
328 } catch (DecodingException exc) {
329 setErrorStatus(AsnObject.SNMP_ERR_DECODINGASN_EXC, exc);
330 }
331 }
332 }
333
334
335
336
337 protected void new_value(int n, varbind res) {
338 }
339
340
341
342
343 protected void tell_them() {
344 }
345
346
347
348
349
350
351
352
353
354
355
356 protected boolean isExpectingResponse() {
357 return false;
358 }
359
360 }