1 // NAME
2 // $RCSfile: AsnDecoderv1.java,v $
3 // DESCRIPTION
4 // [given below in javadoc format]
5 // DELTA
6 // $Revision: 3.3 $
7 // CREATED
8 // $Date: 2006/02/09 14:16:36 $
9 // COPYRIGHT
10 // Westhawk Ltd
11 // TO DO
12 //
13
14
15 /*
16 * Copyright (C) 1996 - 2006 by Westhawk Ltd
17 * <a href="www.westhawk.co.uk">www.westhawk.co.uk</a>
18 *
19 * Permission to use, copy, modify, and distribute this software
20 * for any purpose and without fee is hereby granted, provided
21 * that the above copyright notices appear in all copies and that
22 * both the copyright notice and this permission notice appear in
23 * supporting documentation.
24 * This software is provided "as is" without express or implied
25 * warranty.
26 * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
27 */
28
29 package uk.co.westhawk.snmp.stack;
30
31 /*-
32 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
33 * SNMP Java Client
34 * ჻჻჻჻჻჻
35 * Copyright 2023 MetricsHub, Westhawk
36 * ჻჻჻჻჻჻
37 * This program is free software: you can redistribute it and/or modify
38 * it under the terms of the GNU Lesser General Public License as
39 * published by the Free Software Foundation, either version 3 of the
40 * License, or (at your option) any later version.
41 *
42 * This program is distributed in the hope that it will be useful,
43 * but WITHOUT ANY WARRANTY; without even the implied warranty of
44 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45 * GNU General Lesser Public License for more details.
46 *
47 * You should have received a copy of the GNU General Lesser Public
48 * License along with this program. If not, see
49 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
50 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
51 */
52
53 import uk.co.westhawk.snmp.util.*;
54 import java.io.*;
55 import java.util.*;
56
57 /**
58 * This class contains the v1 specific methods to decode bytes into a Pdu.
59 * We split the original class AsnDecoder into four classes.
60 *
61 * @since 4_14
62 * @author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a>
63 * @version $Revision: 3.3 $ $Date: 2006/02/09 14:16:36 $
64 */
65 class AsnDecoderv1 extends AsnDecoderBase {
66 private static final String version_id = "@(#)$Id: AsnDecoderv1.java,v 3.3 2006/02/09 14:16:36 birgit Exp $ Copyright Westhawk Ltd";
67
68 /**
69 * This method creates an AsnPduSequence or an AsnTrapPduv1Sequence out of
70 * the characters of the InputStream for v1.
71 *
72 * @see AbstractSnmpContext#run
73 * @see SnmpContext#processIncomingResponse
74 * @see SnmpContext#processIncomingPdu
75 */
76 AsnSequence DecodeSNMP(InputStream in, String community)
77 throws IOException, DecodingException {
78 AsnSequence asnTopSeq = getAsnSequence(in);
79 int snmpVersion = getSNMPVersion(asnTopSeq);
80 if (snmpVersion != SnmpConstants.SNMP_VERSION_1) {
81 String str = SnmpUtilities.getSnmpVersionString(snmpVersion);
82 String msg = "Wrong SNMP version: expected SNMPv1, received "
83 + str;
84 throw new DecodingException(msg);
85 }
86 String comm = getCommunity(asnTopSeq);
87 if (comm.equals(community) == false) {
88 String msg = "Wrong community: expected "
89 + community + ", received " + comm;
90 throw new DecodingException(msg);
91 }
92
93 // The message is either a 'normal' PDU or a Trap v1 PDU.
94 AsnSequence seqPdu = null;
95 seqPdu = (AsnPduSequence) asnTopSeq.findPdu();
96 if (seqPdu == null) {
97 seqPdu = (AsnTrapPduv1Sequence) asnTopSeq.findTrapPduv1();
98 }
99 return seqPdu;
100 }
101
102 }