summaryrefslogtreecommitdiff
path: root/ASNMP
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:11 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:11 +0000
commit8008dd09ccf88d4edef237a184a698cac42f2952 (patch)
treeda50d054f9c761c3f6a5923f6979e93306c56d68 /ASNMP
parent13d6e89af439164c0ade48e6f5c3e9b3f971e8c9 (diff)
downloadATCD-8008dd09ccf88d4edef237a184a698cac42f2952.tar.gz
Repo restructuring
Diffstat (limited to 'ASNMP')
-rw-r--r--ASNMP/COPYRIGHT68
-rw-r--r--ASNMP/ChangeLog538
-rw-r--r--ASNMP/Makefile.am16
-rw-r--r--ASNMP/README177
-rw-r--r--ASNMP/TO-DO3
-rw-r--r--ASNMP/agent/Makefile.am44
-rw-r--r--ASNMP/agent/agent.mpc14
-rw-r--r--ASNMP/agent/agent_impl.cpp158
-rw-r--r--ASNMP/agent/agent_impl.h52
-rw-r--r--ASNMP/agent/main.cpp28
-rw-r--r--ASNMP/agent/snmp_agent.cpp104
-rw-r--r--ASNMP/agent/snmp_agent.h48
-rw-r--r--ASNMP/asnmp-overview.html134
-rw-r--r--ASNMP/asnmp/ASNMP_Export.h58
-rw-r--r--ASNMP/asnmp/ChangeLog227
-rw-r--r--ASNMP/asnmp/Makefile.am66
-rw-r--r--ASNMP/asnmp/TODO25
-rw-r--r--ASNMP/asnmp/address.cpp2705
-rw-r--r--ASNMP/asnmp/address.h845
-rw-r--r--ASNMP/asnmp/asn1.cpp1729
-rw-r--r--ASNMP/asnmp/asn1.h345
-rw-r--r--ASNMP/asnmp/asnmp.mpc26
-rw-r--r--ASNMP/asnmp/counter.cpp107
-rw-r--r--ASNMP/asnmp/counter.h79
-rw-r--r--ASNMP/asnmp/ctr64.cpp213
-rw-r--r--ASNMP/asnmp/ctr64.h111
-rw-r--r--ASNMP/asnmp/enttraps.h147
-rw-r--r--ASNMP/asnmp/gauge.cpp114
-rw-r--r--ASNMP/asnmp/gauge.h79
-rw-r--r--ASNMP/asnmp/integer.cpp230
-rw-r--r--ASNMP/asnmp/integer.h142
-rw-r--r--ASNMP/asnmp/octet.cpp594
-rw-r--r--ASNMP/asnmp/octet.h152
-rw-r--r--ASNMP/asnmp/oid.cpp803
-rw-r--r--ASNMP/asnmp/oid.h175
-rw-r--r--ASNMP/asnmp/oid_def.h84
-rw-r--r--ASNMP/asnmp/pdu.cpp499
-rw-r--r--ASNMP/asnmp/pdu.h219
-rw-r--r--ASNMP/asnmp/sagent.cpp97
-rw-r--r--ASNMP/asnmp/sagent.h82
-rw-r--r--ASNMP/asnmp/smi.h147
-rw-r--r--ASNMP/asnmp/smival.h102
-rw-r--r--ASNMP/asnmp/snmp.cpp286
-rw-r--r--ASNMP/asnmp/snmp.h137
-rw-r--r--ASNMP/asnmp/snmperrs.h210
-rw-r--r--ASNMP/asnmp/target.cpp321
-rw-r--r--ASNMP/asnmp/target.h260
-rw-r--r--ASNMP/asnmp/timetick.cpp144
-rw-r--r--ASNMP/asnmp/timetick.h85
-rw-r--r--ASNMP/asnmp/transaction.cpp207
-rw-r--r--ASNMP/asnmp/transaction.h83
-rw-r--r--ASNMP/asnmp/transaction_result.h26
-rw-r--r--ASNMP/asnmp/vb.cpp399
-rw-r--r--ASNMP/asnmp/vb.h207
-rw-r--r--ASNMP/asnmp/wpdu.cpp521
-rw-r--r--ASNMP/asnmp/wpdu.h84
-rw-r--r--ASNMP/examples/Makefile.am17
-rw-r--r--ASNMP/examples/get/Makefile.am60
-rw-r--r--ASNMP/examples/get/get.cpp202
-rw-r--r--ASNMP/examples/get/get.mpc23
-rw-r--r--ASNMP/examples/get/get_async.cpp211
-rw-r--r--ASNMP/examples/next/Makefile.am40
-rw-r--r--ASNMP/examples/next/next.cpp200
-rw-r--r--ASNMP/examples/next/next.mpc13
-rw-r--r--ASNMP/examples/set/Makefile.am40
-rw-r--r--ASNMP/examples/set/set.cpp271
-rw-r--r--ASNMP/examples/set/set.mpc13
-rw-r--r--ASNMP/examples/trap/Makefile.am40
-rw-r--r--ASNMP/examples/trap/trap.cpp188
-rw-r--r--ASNMP/examples/trap/trap.mpc12
-rw-r--r--ASNMP/examples/walk/Makefile.am40
-rw-r--r--ASNMP/examples/walk/walk.cpp266
-rw-r--r--ASNMP/examples/walk/walk.mpc12
-rw-r--r--ASNMP/mibs/RFC1213-MIB.my2618
-rw-r--r--ASNMP/tests/Address_Test.cpp549
-rw-r--r--ASNMP/tests/Counter64_Test.cpp156
-rw-r--r--ASNMP/tests/Counter_Test.cpp136
-rw-r--r--ASNMP/tests/Gauge_Test.cpp133
-rw-r--r--ASNMP/tests/Integer_Test.cpp200
-rw-r--r--ASNMP/tests/Makefile.am164
-rw-r--r--ASNMP/tests/Octet_Test.cpp156
-rw-r--r--ASNMP/tests/Oid_Test.cpp181
-rw-r--r--ASNMP/tests/Target_Test.cpp145
-rw-r--r--ASNMP/tests/Varbind_Test.cpp197
-rw-r--r--ASNMP/tests/run_tests.bat44
-rwxr-xr-xASNMP/tests/run_tests.sh61
-rw-r--r--ASNMP/tests/test_config.h199
-rw-r--r--ASNMP/tests/tests.mpc91
88 files changed, 0 insertions, 21234 deletions
diff --git a/ASNMP/COPYRIGHT b/ASNMP/COPYRIGHT
deleted file mode 100644
index ad880b9cf90..00000000000
--- a/ASNMP/COPYRIGHT
+++ /dev/null
@@ -1,68 +0,0 @@
-Mon Jul 14 12:12:32 PDT 1997
-
-These copyrights apply to the SNMP++ module shipped with the ACE library:
-
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-
-=====================================================================*/
-
-/**********************************************************************
- Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of CMU not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-******************************************************************/
-
-Certain portions of this version of HP's SNMP++ are:
-
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
diff --git a/ASNMP/ChangeLog b/ASNMP/ChangeLog
deleted file mode 100644
index a2fc9832377..00000000000
--- a/ASNMP/ChangeLog
+++ /dev/null
@@ -1,538 +0,0 @@
-Wed Mar 8 10:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * asnmp/*.h:
- Converted to doxygen style of documentation
-
-Wed Jan 4 22:47:13 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
-
- * ChangeLog:
-
- Untabify.
- Delete-trailing-whitespace.
-
- Added "Local Variables" section defining "add-log-time-format"
- to a really ugly lambda expression that formats changelog
- timestamps in UTC and works with both GNU Emacs and XEmacs.
-
-Fri Dec 30 11:11:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * asnmp/transaction.cpp:
- Updated because the ACE_Time_Value constructors are now explicit
-
-Fri Dec 23 09:56:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * asnmp/address.{h,cpp}:
- Added LEN as postfix for HASH0, HASH1 and HASH2. VxWorks 6.1 PPC
- defines HASH1 and HASH2
-
-Wed Oct 5 10:23:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * asnmp/asn1.cpp:
- * asnmp/pdu.cpp:
- Fixed might be used uninitialized warnings in MinGW build
-
-Fri Jul 15 10:12:19 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu>
-
- * Removed the asnmp.mwc file so that it can be regenerated by MPC
- automatically. Thanks to Sam Mesh <sam.mesh@gmail.com> for
- reporting this. This fixes bugid 2190.
-
-Sun Oct 3 20:12:43 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * asnmp/oid.cpp:
-
- Fixed a double deletion problem reported by Shlomi Yaakobovich.
-
-Thu Sep 30 10:54:39 2004 Steve Huston <shuston@riverace.com>
-
- * examples/get/get.cpp:
- * examples/get/get_async.cpp:
- * examples/next/next.cpp:
- * examples/set/set.cpp:
- * examples/trap/trap.cpp:
- * examples/walk/walk.cpp: Added #include "ace/Argv_Type_Converter.h".
-
-Wed Sep 29 15:33:29 2004 Steve Huston <shuston@riverace.com>
-
- * asnmp/sagent.cpp:
- * agent/snmp_agent.cpp:
- * examples/get/get.cpp:
- * examples/get/get_async.cpp:
- * examples/next/next.cpp:
- * examples/set/set.cpp:
- * examples/trap/trap.cpp:
- * examples/walk/walk.cpp:
- * tests/test_config.h:
- * tests/Address_Test.cpp:
- * tests/Counter64_Test.cpp:
- * tests/Counter_Test.cpp:
- * tests/Gauge_Test.cpp:
- * tests/Integer_Test.cpp:
- * tests/Octet_Test.cpp:
- * tests/Oid_Test.cpp:
- * tests/Target_Test.cpp:
- * tests/Varbind_Test.cpp: Adjustments to build with wide-char.
-
-Fri Aug 6 08:14:12 2004 Douglas C. Schmidt <schmidt@cs.wustl.edu>
-
- * asnmp/transaction.{h,cpp}: Added a get_handle() call to
- session. Thanks to Geo Sebastian <geosebastian@onmobile.com>
- for this fix.
-
-Fri May 7 14:42:22 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * tests/Counter_Test.cpp (TestCounter):
- * tests/Gauge_Test.cpp (TestGuage):
- * tests/Integer_Test.cpp (TestUnsignedInteger32):
-
- More "comparison between signed and unsigned integer"
- warning fixes.
-
-Thu May 6 11:03:26 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * tests/Counter_Test.cpp (TestCounter):
- * tests/Counter64_Test.cpp (TestCounter64):
- * tests/Gauge_Test.cpp (TestGuage):
- * tests/Integer_Test.cpp (TestUnsignedInteger32):
-
- Fixed "comparison between signed and unsigned integer"
- warnings.
-
-Mon Apr 26 18:37:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * examples/get/get.cpp:
- * examples/get/get_async.cpp:
- * examples/next/next.cpp:
- * examples/set/set.cpp:
- * examples/trap/trap.cpp:
- * examples/walk/walk.cpp:
- Don't use deprecated methods of ACE_Get_Opt and ACE_Reactor
-
-Mon Apr 26 15:14:12 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * examples/trap/purify4.1.txt:
- Removed this file, it contains purify results and shouldn't
- belong in the repo.
-
-Thu Apr 22 20:45:27 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * tests/Octet_Test.cpp:
- * tests/Oid_Test.cpp:
-
- Changed all return types for equality, relational and logical
- operators to "bool", as is the norm for modern C++.
-
-Fri Apr 16 16:53:20 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * tests/Gauge_Test.cpp (TestGuage):
- * tests/Integer_Test.cpp (TestInteger32, TestUnsignedInteger32):
-
- Fixed some "comparison between signed and unsigned integer"
- warnings.
-
-Mon Mar 29 06:56:11 UTC 2004 Johnny Willemsen <jwillemsen@remedy.nl>
-
- * tests/Integer_Test.cpp:
- Fixed a warning in Win32 builds.
-
-Fri Mar 26 09:49:10 2004 Balachandran Natarajan <bala@dre.vanderbilt.edu>
-
- * tests/Integer_Test.cpp:
-
- Fixed a warning in Win32 builds.
-
-Fri Aug 29 07:56:19 2003 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * tests/Octet_Test.cpp (TestOctet):
-
- Fixed "string literal converted to char *" warning. String
- literals are now considered "const" by standard C++.
-
-Sun Nov 24 17:04:33 2002 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu>
-
- * agent/main.cpp (main): Added ACE::init() to the beginning of
- main() to prevent crashes on Windows. Thanks to Huseyin Calgin
- <calgin@yahoo.com> for reporting this.
-
-Fri Feb 8 04:42:21 2002 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu>
-
- * asnmp/transaction.cpp (run): Changed the code to use ACE_Reactor::instance ()
- rather than a local ACE_Reactor on the stack. Thanks to Paresh
- Raote <p_raote@yahoo.com> for reporting this.
-
-Thu Jan 25 12:48:33 2001 Craig Rodrigues <crodrigu@bbn.com>
-
- * agent/Makefile.orig
- asnmp/address.h.orig
- examples/next/next.cpp
- examples/trap/trap.cpp
- examples/walk/walk.cpp
- tests/test_config.h
- tests/Varbind_Test.cpp
- tests/Counter64_Test.cpp
- tests/run_tests.sh
-
- New agent Makefile, and compilation fixes.
-
-Sun Jun 4 14:51:33 2000 Darrell Brunsch <brunsch@uci.edu>
-
- * asnmp-overview.html:
-
- Added missing CVS Id string.
-
-Tue Dec 21 16:22:21 1999 David L. Levine <levine@cs.wustl.edu>
-
- * tests/*.cpp: removed the unnecessary explicit template
- instantiation. Other instantiations were necessary
- with it, and it seemed to serve no useful purpose:
- there was no use of an ACE_Unbounded_Set<Log_Msg *>.
- Thanks to Jose Rubio <jrubio@tr.comm.mot.com> for
- reporting link failures with Sun CC 5.0, with explicit
- template instantiation enabled.
-
- * tests/test_config.h: added #include of "ace/ACE.h",
- because the file uses it later. g++ 2.91.66 on Linux
- needed it.
-
-Wed Jul 14 08:26:42 1999 Brian Raven <brianr@liffe.com>
-
- * asnmp/snmp.{h,cpp},wpdu.cpp:
- SYNOPSIS:
- 1) The agent IP address in traps originating from logical
- domains on an Enterprise 10000 is that of the physical domain.
-
- 2) The code that gets the IP address uses gethostbyname
- which is unsafe in a MT environment (according to the man page).
-
- DESCRIPTION:
- 1) The problem seems to be caused by hostname only returning
- the physical domain name.
-
- SAMPLE FIX/WORKAROUND:
- 1) To get around this problem I added the capability to
- override the local host name.
-
- 2) I would suggest using the GenAddress class to obtain the
- IP address.
-
-Tue Jun 22 13:34:54 1999 David L. Levine <levine@cs.wustl.edu>
-
- * agent/Makefile: replaced rm -f with $(RM).
-
-Thu Apr 29 06:46:46 1999 David L. Levine <levine@cs.wustl.edu>
-
- * tests/Makefile: changed SRC to PSRC (for make depend).
- Thanks to Sandeep Goyal <sagoyal@hss.hns.com> for reporting
- that the Makefile was broken.
-
-Mon Dec 28 22:03:57 1998 David L. Levine <levine@cs.wustl.edu>
-
- * agent/main.cpp: added #include "ace/inc_user_config.h", for
- ACE_RCSID definition. Thanks to wym <wym@dekang.com> for
- reporting that it won't compile without it.
-
-Tue Oct 27 08:52:05 1998 David L. Levine <levine@cs.wustl.edu>
-
- * asnmp/Makefile,tests/Makefile: added SRC definition for make depend, and updated dependencies.
-
-Mon Aug 3 17:50:08 1998 Gonzalo Diethelm <gonzo@tango.cs.wustl.edu>
-
- * examples/get/get_async.cpp:
- * examples/get/get.cpp:
- Added ACE_RCSID to these files.
-
-Fri Jul 31 19:26:07 1998 Gonzalo Diethelm <gonzo@tango.cs.wustl.edu>
-
- * examples/Makefile:
- It had a missing info subdirectory.
-
- * agent/agent_impl.cpp:
- * agent/main.cpp:
- * agent/snmp_agent.cpp:
- * asnmp/address.cpp:
- * asnmp/asn1.cpp:
- * asnmp/counter.cpp:
- * asnmp/ctr64.cpp:
- * asnmp/gauge.cpp:
- * asnmp/integer.cpp:
- * asnmp/octet.cpp:
- * asnmp/oid.cpp:
- * asnmp/pdu.cpp:
- * asnmp/sagent.cpp:
- * asnmp/snmp.cpp:
- * asnmp/target.cpp:
- * asnmp/timetick.cpp:
- * asnmp/transaction.cpp:
- * asnmp/vb.cpp:
- * asnmp/wpdu.cpp:
- * examples/get/get.cpp:
- * examples/next/next.cpp:
- * examples/set/set.cpp:
- * examples/trap/trap.cpp:
- * examples/walk/walk.cpp:
- * tests/Address_Test.cpp:
- * tests/Counter64_Test.cpp:
- * tests/Counter_Test.cpp:
- * tests/Gauge_Test.cpp:
- * tests/Integer_Test.cpp:
- * tests/Octet_Test.cpp:
- * tests/Oid_Test.cpp:
- * tests/Target_Test.cpp:
- * tests/Varbind_Test.cpp:
- Added ACE_RCSID to these files.
-
-Wed Jul 15 20:34:55 CDT 1998
- * general fixes for SNMPv1 trap generation code reported by
- Hien Nguyen <hnguyen@adcapex.com> and Jeff Hall <jeff@liffe.com>
- Added Hien's fixes, plus fixed -c option
- in examples/trap to properly set community string.
- * release 2.0
-
-Fri Jan 30 15:29:42 CST 1998
- * fix vb.cpp to handle Gauge/uInt the same way. While retrieving
- ifTable found the bug.
-
-Wed Dec 10 12:09:36 CST 1997
- * sagent.cpp, Eric Newton fix. result not checked. v1.8
-
-Mon Dec 8 14:33:59 CST 1997
- * Thanks to Eric Newton's <ecn@smart.net> continued patches
- Version 1.7 has fixes for: agent, base library
- Fix to the response type fixes the interoperability with CMU snmp on
- linux. (and SNMP Research as well)
-
- Initialize member of Pdu: output_
- Send responses as response messages
- Deallocate and reset the io_vec
-
- The transaction object didn't initialize the io_vec used to receive
- a packet when it was used for an agent transaction.
-
- Cleans up a warning about using a const object from a previous
- patch.
-
- Removes the transaction object from the Reactor.
-
-
-Sun Nov 30 17:49:12 CST 1997 Mike MacFaden <mrm@tango.cs.wustl.edu>
- * Thanks to Eric Newton's <ecn@smart.net> apply patches:
- Removed G++ warnings:
- Removed unused variables
- Cleaned up unused args to functions
- Initialized variables
- Inserted casts in *printf* functions
- Added int return types to function definitions
- Converted some variables from int to size_t to cut down on
- sign comparison warnings
- Reordered constructor initializer lists
- Added return statements to functions returning int
-
- Modified for G++ language differences:
- Modified for loops for ANSI scoping rules
-
- Fixed Bugs:
- Deleted incorrect (cut-n-pasted) header to transaction.h
- Removed "assignment in if condition" error
- Added missing "break;" in switch statement in wpdu
-
- Features:
- Added async interface.
-
- Noise:
- Modified makefiles for g++ on Linux RedHat 4.1
-
- * The new async interface has a test example in examples/get/get_async.cpp
- that is useful if you are extending the get application.
-
- * Fixed makefile to include -lasnmp when building tests/examples
-
- * Compile and test with ACE 4.4 on Solaris 2.5.1 using Sun CC 4.2
- no warnings/errors. get_async will sigbus however in destructors.
-
-Thu Sep 4 18:56:12 1997 Mike MacFaden <mrm@tango.cs.wustl.edu>
-
- * commit agent/ mibs/ and update asnmp/ with sagent.h, cpp
- to implement a trivial SNMPv1 agent that hard codes support
- for mib II system group only.
-
-Fri Aug 22 23:43:20 1997 Mike MacFaden <mrm@tango.cs.wustl.edu>
-
- * clean up two memory leaks in octet class and one umr
-
-Thu Aug 21 20:59:23 1997 Mike MacFaden <mrm@tango.cs.wustl.edu>
-
- * Added Netbios address support to GenAddress
- and added DecNetAddress, AppleTalkAddress classes per CISCO-TC.my
- (ftp://ftp.cisco.com/pub/mibs)
-
-Tue Aug 19 20:19:32 1997 Michael R. MacFaden <mrm@mrm-ss20.cisco.com (Michael R. MacFaden)>
- * change IpAddress::is_arpa() to is_private() and update the comments
- per RFC 1597. Add new test routine to verify this function in
- tests/Address_Test.cpp
-
- * add IpAddress::to_octet(OctetStr& val) which is useful when having to
- send a network address as an Octet String as in CISCO-PING-MIB.my
-
-Tue Aug 5 12:12:39 1997 Mike MacFaden (mrm@mrm-ss20)
- * Thanks to Amos Shapira <amos@gezernet.co.il> apply patches
- to support IRIX 6.3. Stated request for:
- I think it would make things "righter" to make the code use C++
- strings (and maybe vectors?).
-
- * Begin testing on HP-UX 10.01 (missing ucontext.h)
-
-Sat Aug 2 12:07:43 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
-
- * Started to integrate the code into a more ACE-like style, e.g.,
- added a the "asnmp/" prefix to all the header files so that we
- don't need to play games with the -I flags and so we can always
- know where we're getting the headers from.
-
-Fri Aug 1 19:23:52 1997 Mike MacFaden (mrm@mrm-ss20)
-
- * NOTES: This first version only tested on Solaris 2.5
-
- * review classes for thread safety. Current thread design only
- allows for one thread to safely access any ASNMP object created.
-
- * run purify test of get routine no -memory leaks.
-
- * verify both shared archive/static archive types work with
- example programs
-
- * << Globals Changes >>
-
- * tested only archiver library version
-
- * reformat code to use one brace style.
-
- * changed all manifest constants defined as _XX to XX_ to stay out
- of compiler namespace
-
- * change all OS calls to use ACE_OS:: portability layer, #include
- <ace/OS.h>
-
- * reformat code to use one consistent brace layout and redo
- header using ACE
-
- * remove semicolons on member functions foo{}; - not necessary
-
- * make get() methods const member functions
-
- * removed unnecessary casts that looked like this: and revamped
- all memory allocations via ACE_NEW macro
-
- new_oid = (SmiLPUINT32) new unsigned long [ smival.value.oid.len
-
- To
-
- ACE_NEW(new_oid, SmiUINT32[ smival.value.oid.len])
-
- * Collapsed default constructors with constructors to constructors
- with default arguments.
-
- * removed unused #include <iostream.h>
-
- * Added ACE_TRACE() to classes
-
- * change get_printable() to to_string() - there will be more java
- programmers in the future so this should be the first step...
-
- * removed ASYNC interface till it can be rebuilt using ACE patterns
-
- * Attempt to make interface more type strict but leaving generic
- interfaces as escape hatch. Example: CTarget becomes UdpTarget
- for UDP/IP based agents.
-
- * << Class Specific Changes >>
-
- * Oid class:
- - remove char * routines, simplify class
- - added suboid method and removed get_printable() overloads
-
- * CTarget class:
- - renamed to UdpTarget. Stay out of Microsoft Namespace per MSJ
- Article by Allen Hollub.
-
- * Varbind class:
- - remove generic set_value for char,int, etc. Too easy to get
- this wrong. Allow just types defined.
- - added overload for equality operator (==)
- - added new constructor to allow setting full vb state oid,value, exception
- - add to_string()
-
- * Address class:
- - change manifest constants to enums for address lengths, add IP V6 lens
-
- - add a netbios name class, still pretty worthless since I don't have spec
- in front of me yet...
-
- - rewrite resolver calls to be thread safe and cleaner by moving to two
- class (static) member functions:
-
- // thread safe routine to lookup ip address given hostname
- // return <> 0 on error
- static int resolve_to_addr(const char *hostname, in_addr& quad_addr);
-
- // thread safe routine to lookup name given ip address
- // return <> 0 on error
- static int resolve_to_hostname(const in_addr& quad_addr, char *hostname)
-
- * added some interrogation routines to class IpAddress:
- is_loopback() const;
-
- * Ctr64 class:
- - added constructor using long long datatype (needs to be made
- portable to NT
-
- * Pdu class: add to_string()
-
- * Classes added wpdu class:
- - a new adpater class between CMU and HP pdu, varbind data structures
-
- * transaction class:
- - implement get/getnext timeout and retry logic using ACE
- Reactor class, ACE_Time_Value
-
-Sat Jul 5 19:13:30 1997 Mike MacFaden (mrm@mrm-ss20)
-
- * unpacked snmp++.tar.Z into ACE_wrappers, remove X11 support. If
- you need GUI support in a communications package, something's
- wrong, very wrong....
-
- * Change HP-UX Makefiles to use ACE makefile system
-
- * Change includes to use ACE OS Adaption Layer
-
- * change all OS calls to use ACE_OS:: versions
-
- * Add ACE_TRACE macros to all functions.
-
- * clean up the global namespace by puting all global functions
- into C++ classes as static member functions and make public only
- those that are used (uxsnmp.cpp, eventlist.cpp)
-
- * create README from readme.txt, COPYRIGHT files.
-
- * create tests/ directory rename ConsoleExamples to examples
-
- * cull out dead code modules and dump them into misc dir:
- oidname.cpp, ipresolv.cpp
-
- * ipresolv.cpp had broken hostname buffer size (200), when DNS has
- aways defined a max FQDN as 256...go figure.
-
- * add General Error handler since existing ones are not very
- useful in and of themselves.
-
- * change all _DEF to DEF_ since _ANYTHING is reserved for compiler
- writer namespace, NOT app writer
-
- * convert cmu code to use C++ new/delete from malloc/free so
- entire library uses C++ new constructor
-
-Local Variables:
-mode: change-log
-add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time))
-indent-tabs-mode: nil
-End:
diff --git a/ASNMP/Makefile.am b/ASNMP/Makefile.am
deleted file mode 100644
index fa06f83a3c9..00000000000
--- a/ASNMP/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-SUBDIRS = \
- asnmp \
- agent \
- examples \
- tests
-
diff --git a/ASNMP/README b/ASNMP/README
deleted file mode 100644
index f07563c61a5..00000000000
--- a/ASNMP/README
+++ /dev/null
@@ -1,177 +0,0 @@
-Fri Dec 18 09:43:35 CST 1998
-====================================================================
-ASNMP = ACE+SNMP++ Version 2.1
-By Michael R. MacFaden mrm@acm.org, mrm@yagosys.com
-====================================================================
-
-What is ASNMP ? ==> ACE+SNMP! aka Another SNMP API
- HP's SNMP++ 2.5 freely available C++ SNMP class library
- has been adapted to the ACE 4.2 Framework.
-
-What is Simple Network Management Protocol(SNMP)?
- See the FAQ:
- http://www.snmp.com/FAQs/snmp-faq-part1.txt
- http://www.snmp.com/FAQs/snmp-faq-part2.txt
-
-
-What was changed from HP version?
- See src/ChangeLog file.
-
-Is HP SNMP++ compatible with ASNMP?
- It is neither source nor binary compatible. About 10% of the API has changed.
- There have been API changes to make the interface more orthogonal
- and to reduce implementation complexity such as consolidating constructors
- with default formal values, and to remove some inconsistencies
- with the HP interface as well as locking down valid() semantics, etc.
-
-What platforms have the test programs been verified on?
- Solaris 2.4, 2.5.1 using SUN C++ 4.1,4.2 compiler. Linux/GCC
- fixes are now in as well.
-
-Why use this version?
- The SNMP++ version ships only for HP-UX and for Windows.
- It is not very portable nor does it do a good job at checking
- for out of memory exhaustion conditions (asn1.cpp). There is some great
- code here. ACE needs an SNMP library to build NM type
- communications applications. Hence ASNMP was born in my spare time.
-
-How does ASNMP differ from SNMP?
- Current version uses ACE OS Adaption layer. All memory
- allocation is now consistent, uses ACE_NEW().
- Standard ACE Debugging (ACE_TRACE) has been inserted.
- ASNMP has less global namespace pollution by moving all non-class
- functions into interface classes or made into static locals.
-
- An agent inteface has been added (asnmp/sagent.h) so both agents
- and managers can use this class library. A trivial agent
- exists in ASNMP/agent/
-
- X11 GUI support removed from this version since this is
- not the place to include GUI support in the new world of
- multi-threaded apps.
-
- The async interface does not match the HP implementation.
-
-How to build this library
- Set ACE_ROOT and platform_macros.GNU per ../INSTALL file.
- create libasnmp.a, libasnmp.so and then run the tests
-
-Any Support for ASNMP?
- As time permits from the mailing list.
-
-Where to ask questions?
- Please use ace-users@cs.wustl.edu mailing list or mrm@acm.org
-
-NOTE: Please do not bother Eric Mellquist unless you are using
- the original HP version of this library.
-
-Where can I get the original HP SNMP++?
- From ftp://rosegarden.external.hp.com:/pub/snmp++
-
-What version of SNMP is fully supported?
- SNMP Version 1 (RFC 1155,1157, 1215)
-
-What about SNMP Version 2c?
- V2c is defined in RFC 1901 - 1908
- These bits are added to v1 code in this library: GetBulk PDU, Counter64
- These bits are missing Inform (RFC 1905)
- RFC 1903 defined new datatypes using existing SMI via macros.
- These should be coded as if they were SMI datatypes to encapsulate
- their behavior. V2c hasn't been deployed
-
-What about SNMP Version 3?
- It is looking good for V3, but so far, we're just watching.
- http://www.ietf.org/html.charters/snmpv3-charter.html
- A C implemenation is now available from UC Davis.
-
-What copyrights/legal requirements are required when using this code?
- See ./COPYRIGHT
-
-Does this really work?
- See tests/ directory for the current test reports (purify/purecov/...).
-
-How does one Extend an SNMP Agent?
- Extending an agent typically means updating the agent source or
- using a dynamic link style API. RFC 2257 (AgentX) is the current design
- for doing this in a standard way. This hasn't been well formalized yet
- so extending an existing agent is still a vendor API thing.
-
- The agent provided here is a template. A mib compiler and agent
- library typically provide better agent support. See the UC-Davis
- SNMP software for an example Agent that is portable and can report
- on many flavors of UNIX and Windows.
-
-Any Future Plans?
- The ASNMP library will be improved for performance and made to use
- higher level design patterns. Hopefully it will be used as a
- vehicle for grad students to learn something about network mgmt
- code work a related cousin of general distributed programming.
-
-
-Regards,
-Michael R. MacFaden
-Member of the Technical Staff
-Cabletron Systems, Inc.
-215 Moffet Park Drive
-Sunnyvale, CA 94089
-mrm@yagosys.com
-http://www.yagosys.com
-
-====================================================================
-SNMP++ For UNIX Source Code and Examples:
-====================================================================
-Included within this package can be found the source code and
-examples for SNMP++. The following represents the directories which
-are included within the compressed tar file and their contents.
-
-For more details on the API , please refer to the API specification.
-
-This library is a complete implementation of SNMP++ and does not
-require other SNMP libraries to be present.
-
-Required Tools:
----------------------------------------------------------------------
-
-
-readme.txt ( this file)
-|
-|
-|------ src ( .cpp files and Makefile for building libraries )
-|
-|------ examples ( a variety of apps, .cpp and Makefile included )
-|
-|------ tests - unit test routines
-
-
-src Directory Contents:
---------------------------------------------------------------------
-Makefile - make file for ACE/Solaris 2. build
-target.cpp - Collection of attributes(address, timeout, etc) used
- to define a command session
-snmp.cpp - A logical session between NM app and agent
-pdu.cpp - Pdu class source (vb list and API command)
-wpdu.cpp - Adapter pattern based class between CMU and HP code
-transaction.cpp - synchronous transaction clss
-vb.cpp - Variable Binding class source (oid + value)
-
-<< SMI datatypes used to get/set values in SNMPv1 agents >>
-
-address.cpp - Address class source
-gauge.cpp - Gauge32 class source
-integer.cpp - Integer32 class source
-counter.cpp - Counter32 class source
-ctr64.cpp - Counter64 class source
-timetick.cpp - TimeTicks class source
-octet.cpp - Octet String class source
-oid.cpp - Oid class source
-asn1.cpp - ASN1 encoding and decoding code. CMU code.
-
-examples Directory Contents:
----------------------------------------------------------------------
-Makefile - make file for building console apps
-get.cpp - source for SNMP get program
-next.cpp - source for SNMP get Next program
-set.cpp - source for SNMP set program
-trap.cpp - source for SNMP trap send program
-walk.cpp - source for SNMP walk program
-
diff --git a/ASNMP/TO-DO b/ASNMP/TO-DO
deleted file mode 100644
index a05b7106f58..00000000000
--- a/ASNMP/TO-DO
+++ /dev/null
@@ -1,3 +0,0 @@
-TODO:
- - Attempt to make all subroutines thread safe
- - work on test suite - validate basic stuff doesn't leak
diff --git a/ASNMP/agent/Makefile.am b/ASNMP/agent/Makefile.am
deleted file mode 100644
index b37fe7aec9e..00000000000
--- a/ASNMP/agent/Makefile.am
+++ /dev/null
@@ -1,44 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-
-## Makefile.asnmp_agent.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS = agent
-
-agent_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-agent_SOURCES = \
- agent_impl.cpp \
- main.cpp \
- snmp_agent.cpp \
- agent_impl.h \
- snmp_agent.h
-
-agent_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/agent/agent.mpc b/ASNMP/agent/agent.mpc
deleted file mode 100644
index 4579c29d458..00000000000
--- a/ASNMP/agent/agent.mpc
+++ /dev/null
@@ -1,14 +0,0 @@
-// $Id$
-
-project (asnmp_agent) : aceexe {
- exename = agent
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- agent_impl.cpp
- main.cpp
- snmp_agent.cpp
- }
-}
diff --git a/ASNMP/agent/agent_impl.cpp b/ASNMP/agent/agent_impl.cpp
deleted file mode 100644
index b0183a964a4..00000000000
--- a/ASNMP/agent/agent_impl.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-// $Id$
-
-// implement a prototype SNMP Agent using ASNMP and ACE
-
-#include <ace/Reactor.h>
-#include <ace/SOCK_Dgram.h>
-#include <ace/INET_Addr.h>
-#include <ace/Signal.h>
-
-#include "agent_impl.h"
-
-ACE_RCSID(agent, agent_impl, "$Id$")
-
-agent_impl::agent_impl(unsigned short port, const char *rd, const char *wr) :
-sagent(port)
-{
- ACE_TRACE("agent_impl::agent_impl");
- tgt_.set_read_community(rd);
- tgt_.set_write_community(wr);
- agent_clock_.start();
-}
-
-agent_impl::~agent_impl()
-{
- ACE_TRACE("agent_impl::~agent_impl");
-}
-
-// callback : have received a Pdu from the target host with given read comm str
-// this is really simplistic, but gives the general idea
-int agent_impl::handle_get( Pdu &pdu, UdpTarget &target)
-{
- ACE_TRACE("agent_impl::handle_get");
- OctetStr mgr_rd_str, agent_rd_str;
- target.get_read_community(mgr_rd_str); // requster's read community string
- tgt_.get_read_community(agent_rd_str); // this agent's read community string
-
- // 1. verify we have a valid read string else drop pdu (no response to caller)
- if (mgr_rd_str != agent_rd_str) {
- ACE_DEBUG((LM_DEBUG, "agent_impl::handle_get: invalid read community recvd\n"));
- return 0;
- }
-
- // 2. iterate over each varbind in the pdu, filling providing responses
- int fdone = 0;
- for (int i = 0; (i < pdu.get_vb_count()) && !fdone; i++) {
- Vb vb;
- pdu.get_vb(vb, i);
- if (get_response(vb)) { // set a value for the oid if we can else
- set_error_status(&pdu, SNMP_ERROR_NO_SUCH_NAME); // these ought to be member
- set_error_index(&pdu, i); // functions but are not yet...
- fdone++; // trigger flag to exit loop early
- }
- else // failed, return noSuch error
- pdu.set_vb(vb, i);
- }
-
- // 3. lastly, return the pkt to the caller
- return respond(pdu, target);
-}
-
-// this routine makes up the brains of the agent
-// it knows only the MIB II system group set of variables for a get operation
-int agent_impl::get_response(Vb& vb)
-{
- // these objects represent the MIB II system group per RFC 1213
- static Oid sysDescr("1.3.6.1.2.1.1.1.0"),
- sysObjectID("1.3.6.1.2.1.1.2.0"), sysUpTime("1.3.6.1.2.1.1.3.0"),
- sysContact("1.3.6.1.2.1.1.4.0"), sysName("1.3.6.1.2.1.1.5.0"),
- sysLocation("1.3.6.1.2.1.1.6.0"), sysServices("1.3.6.1.2.1.1.7.0");
-
- Oid oid;
- vb.get_oid(oid);
- if (oid == sysDescr) {
- OctetStr desc("ASNMP Prototype Agent 1.0");
- vb.set_value(desc);
- }
- else if (oid == sysObjectID) { // the IANA gives assigns Enterprise Numbers
- // see ftp://ftp.isi.edu/in-notes/iana/assignments/enterprise-numbers
- // for the official list of enterprise numbers. Then under this tree
- // assign a unique subtree to identify this agent
- Oid id("1.3.6.1.4.1.2533.9.1");
- vb.set_value(id);
- }
- else if (oid == sysUpTime) {
- ACE_Time_Value tv;
- agent_clock_.elapsed_time (tv);
- TimeTicks tt(tv.msec());
- vb.set_value(tt);
- }
- else if (oid == sysContact) {
- OctetStr contact("mrm@acm.org");
- vb.set_value(contact);
- }
- else if (oid == sysName) {
- OctetStr fqdn("foo.org"); // extract this from the gethostbyname() TODO
- vb.set_value(fqdn);
- }
- else if (oid == sysLocation) {
- OctetStr loc("");
- vb.set_value(loc);
- }
- else if (oid == sysServices) {
- SnmpInt32 svcs(72);
- vb.set_value(svcs);
- }
- else
- return 1; // noSuchName
-
- return 0;
-}
-
-int agent_impl::handle_get_next( Pdu &, UdpTarget &)
-{
- ACE_TRACE("agent_impl::handle_get_next -NI");
- return 0;
-}
-
-int agent_impl::handle_set( Pdu &, UdpTarget &)
-{
- ACE_TRACE("agent_impl::handle_set -NI");
- return 0;
-}
-
-// stuff used by process_requests
-
-// called when SIGINT
-static sig_atomic_t finished = 0;
-
-extern "C" void
-sig_handler (int)
-{
- ACE_TRACE("::sig_handler");
- finished = 1;
-}
-
-int agent_impl::process_requests()
-{
- ACE_TRACE("agent_impl::process_requests");
- ACE_Reactor reactor;
-
- ACE_Sig_Action sa ((ACE_SignalHandler) sig_handler, SIGINT);
- ACE_UNUSED_ARG (sa);
-
- // Read data from other side.
- if (reactor.register_handler (this, ACE_Event_Handler::READ_MASK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "ACE_Reactor::register_handler"), -1);
-
- // TODO: register signal handler to shut down gracefully here
-
- while (!finished)
- {
- reactor.handle_events ();
- ACE_DEBUG ((LM_DEBUG, "return from handle events\n"));
- }
-
- ACE_DEBUG ((LM_DEBUG, "return from handle events - normal shut down\n"));
- return 0;
-}
diff --git a/ASNMP/agent/agent_impl.h b/ASNMP/agent/agent_impl.h
deleted file mode 100644
index 60ee90034a2..00000000000
--- a/ASNMP/agent/agent_impl.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ASNMP
-//
-// = FILENAME
-// agent_impl.h
-//
-// = AUTHOR
-// Michael R. MacFaden
-//
-// ============================================================================
-
-#ifndef AGENT_IMPL_H
-#define AGENT_IMPL_H
-
-#include <ace/Event_Handler.h>
-#include <ace/SOCK_Dgram.h>
-#include <ace/INET_Addr.h>
-#include <ace/High_Res_Timer.h>
-#include <asnmp/sagent.h>
-#include <asnmp/vb.h>
-
-class agent_impl : public sagent
-{
-public:
- agent_impl(unsigned short port, const char *rd, const char *wr);
- virtual ~agent_impl();
-
- virtual int handle_get( Pdu &pdu, UdpTarget &target);
- // retrieve data from a peer agent for a given list of oid values
-
- virtual int handle_get_next( Pdu &pdu, UdpTarget &target);
- // retrieve data lexically adjacent to the oids specified in the pdu
- // from the peer agent
-
- virtual int handle_set( Pdu &pdu, UdpTarget &target);
- // set data in the agent from the list of oids in the pdu
-
- int process_requests();
- // main loop here using a reactor object
-
-private:
- UdpTarget tgt_; // this agent's read, write community strings
- int get_response(Vb& vb); // set values for a "get" cmd
- ACE_High_Res_Timer agent_clock_; // agent "uptime" ticks reported in 1/100 second
-};
-
-#endif /* AGENT_IMPL_H */
diff --git a/ASNMP/agent/main.cpp b/ASNMP/agent/main.cpp
deleted file mode 100644
index ff0c9431518..00000000000
--- a/ASNMP/agent/main.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// $Id$
-
-// This server daemon processes SNMP Version 1 get, get-next, and set
-// commands. over the MIB II "System" group only.
-
-#include "ace/config-all.h"
-#include "snmp_agent.h"
-#include "ace/ACE.h"
-
-ACE_RCSID(agent, main, "$Id$")
-
-int
-main (int argc, char *argv[])
-{
- ACE::init ();
- snmp_agent the_agent;
-
- if (the_agent.set_args(argc, argv))
- return 1;
-
- if (!the_agent.valid()) {
- return 1;
- }
-
- the_agent.run(); // main loop
-
- return 0;
-}
diff --git a/ASNMP/agent/snmp_agent.cpp b/ASNMP/agent/snmp_agent.cpp
deleted file mode 100644
index 520c58eaccf..00000000000
--- a/ASNMP/agent/snmp_agent.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// $Id$
-
-// This server daemon processes SNMPv1 requests over MIB II System group
-
-#include "snmp_agent.h"
-#include "agent_impl.h" // actual implementation
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-#include "ace/Reactor.h"
-
-ACE_RCSID(agent, snmp_agent, "$Id$")
-
-// module globals
-#define SNMP_AGENT_PORT (161)
-#define WR_COM ACE_TEXT ("private")
-#define RD_COM ACE_TEXT ("public")
-
-snmp_agent::snmp_agent() : agent_(0)
-{
- ACE_TRACE("snmp_agent::snmp_agent");
-}
-
-snmp_agent::~snmp_agent()
-{
- ACE_TRACE("snmp_agent::~snmp_agent");
- delete agent_;
-}
-
-
-int snmp_agent::valid() const
-{
- ACE_TRACE("snmp_agent::valid");
- return (agent_ != 0);
-}
-
-int snmp_agent::set_args(int argc, char *argv[])
-{
- ACE_TRACE("snmp_agent::set_args");
- unsigned short port = SNMP_AGENT_PORT;
- const ACE_TCHAR *rd = RD_COM;
- const ACE_TCHAR *wr = WR_COM;
- ACE_Argv_Type_Converter to_tchar (argc, argv);
-
- ACE_Get_Opt get_opt
- (argc, to_tchar.get_TCHAR_argv (), ACE_TEXT ("p:w:r:hv"));
- for (int c; (c = get_opt ()) != -1; ) {
- switch (c)
- {
- case 'p':
- port = (ACE_OS::atoi (get_opt.optarg));
- break;
- case 'w': // write community string
- wr = get_opt.optarg;
- break;
- case 'r': // read community string
- rd = get_opt.optarg;
- break;
-
- case 'h': // help & version info
- case 'v':
- ACE_DEBUG
- ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) Example SNMP Version 1 Agent - ASNMP/ACE\n")));
- return -1;
- break;
-
- default:
- return -1; // invalid arg
- }
- }
-
-
- agent_ = new agent_impl(port,
- ACE_TEXT_ALWAYS_CHAR (rd),
- ACE_TEXT_ALWAYS_CHAR (wr)); // opens OS IO port
- return 0;
-}
-
-int snmp_agent::run()
-{
- ACE_TRACE("snmp_agent::run");
- ACE_ASSERT(agent_);
-
- // open service port
-#if 0
- if (agent_->open_port()) {
- ACE_DEBUG((LM_DEBUG, "(%P|%t) open port %d failed\n", agent_->get_port()));
- return -1;
- }
-#endif
-
- // Run forever, processing SNMP requests.
-
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) starting up snmp agent (server) daemon\n")));
-
- agent_->process_requests();
-
- ACE_DEBUG
- ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) shutting down snmp agent (server) daemon\n")));
- return 0;
-}
-
diff --git a/ASNMP/agent/snmp_agent.h b/ASNMP/agent/snmp_agent.h
deleted file mode 100644
index a7fc4c42de8..00000000000
--- a/ASNMP/agent/snmp_agent.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// $Id$
-
-/* -*-C++-*- */
-
-#ifndef SNMP_AGENT_
-#define SNMP_AGENT_
-// ============================================================================
-//
-// = LIBRARY
-// ASNMP
-//
-// = FILENAME
-// snmp_agent.h
-//
-// = AUTHOR
-// Michael R. MacFaden (mrm@cisco.com)
-//
-// ============================================================================
-
-class agent_impl;
-
-class snmp_agent {
- // = TITLE
- // An SNMP v1 agent class
- //
- // = DESCRIPTION
- // Contructs agents that are capable of processing SNMPv1 requests
- // over the MIB II System group
-
- public:
- snmp_agent(); // uses port 161, public, private
- ~snmp_agent();
-
- int valid() const;
- // did object construct ok
-
- int set_args(int argc, char *argv[]);
- // runtime arguments such as community strings, port to use
-
- int run();
- // begin processing requests
-
- private:
- snmp_agent(const snmp_agent&);
- agent_impl *agent_;
-};
-
-#endif // SNMP_AGENT_
diff --git a/ASNMP/asnmp-overview.html b/ASNMP/asnmp-overview.html
deleted file mode 100644
index 4e336178b0d..00000000000
--- a/ASNMP/asnmp-overview.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<html>
-<!-- $Id$ -->
-<! by Michael R. MacFaden mrm@cisco.com >
-<title>ASNMP Overview</title>
-
-<h1>ASNMP Overview</h1>
-
-<p>The Another SNMP class library is an Object Oriented programming
-toolkit for using IETF standard network management protocols in the
-Internet. The SNMP protocol is perhaps the most ubiquitous management
-protocol running on most very device or application deployed in the
-modern network today.
-
-<p>ASNMP is targeted to programmers that want to write command and
-control (C&C) applications. C&C Applications communicate with
-a variety of objects:
-<sl>
-<li>network devices such as ATM switches, Internet routers,
-LAN bridges and LAN printers
-<li>Routing protocols such as OSPF
-<li>database servers such as ORACLE or Informix.
-
-<p>ASNMP Version 1 implements a blocking SNMP Version 1 with some
-Version 2c additions (Counter32, Counter64 SMI values). See
-SNMP Version 1 as defined in the IETF Request for Comments (RFC)
-<sl>
-<li>1155
-<li>1157
-<li>1213
-<li>1215
-<sl>
-<p>Also see the RFC 1902 spec for new SMI datatypes such as Counter64.
-
-<p>ASNMP is built using the CMU SNMP and HP SNMP++ as the base
-classes then modified for use in the ACE framework. About 10% of the API
-changed during code rework. See ASNMP/asnmp/ChangeLog for details.
-
-<p>ASNMP can be used for either manager applications or agent applications.
-The <i>Snmp</i> class contains the interface for manager applications. The
-<i>sagent</i> class contains the interface for agent applications. A
-trivial agent that implements the mib II system group per rfc1213 is
-in the agents/ directory.
-
-<h2>Class Heirarchy</h2>
-
-<pre>
-UdpTarget - Defines a collection of attributes needed to define a
- communications session with an SNMP agent
- This includes network address, response timeout, etc.
-
-Snmp - A logical session between NM app and agent. Provides the
- commands get, get_next, trap. Manages transactions between app and
- server.
-
-Pdu - A container object that represents an SNMP Protocol Data Unit.
- A Pdu contains a command (get,getnext,trap) Varbind List list,
- a community string.
-
-Vb - Aka Varbind or Variable Binding. A pdu can have zero,
- one or more of these. A Vb consists of an Oid to identify
- the variable and a value corresponding to one of the SMI values.
- The oid/value binding is defined in a MIB file (RFC 1155)
- Agents hava a MIB file that defines what each variable means.
- Most agents implement MIB II as defined in RFC 1156.
-
-<p>The Structure of Managment Information (SMI) datatypes
-and related types are:
-<ul>
-<li>Address->IpAddress->UdpAddress as well as MAC, IPX, IPXSOCK, Netbios
-<li>Unsigned Integer
-<li>Gauge32
-<li>Integer32
-<li>Counter32
-<li>Counter64
-<li>TimeTicks
-<li>OctetStr
-<li>Oid
-</ul>
-
-<hr>
-
-<h2>Sample program</h2>
-<p>A sample Object to get obtain an Agent's Systems' Description
-given an network address and a community string.
-
-class system_id {
- public:
- system_id(UdpAddress addr, OctetStr read_community_string)
- {
- UdpTarget tgt;
- Snmp snmp;
- Pdu pdu;
- Oid oid("1.3.6.1.2.1.1.1.0");
- Vb vb(oid);
- tgt.set_address(addr);
- tgt.set_read_community(read_community_string);
- pdu += vb;
-
- if (snmp.get(pdu, tgt) == 0) {
- pdu.get_vb(vb, 0);
- vb.get_value(desc_);
- }
- else
- desc_ = "<error - no value set>"
- }
-
- int get_description(OctetStr& description) {
- description = desc_;
- return 0;
- }
-
-private:
- OctetStr desc_;
-};
-
-<h1>Future Directions</h1>
-<p>Here are some areas for further work
-<sl>
-<li>Add OO mib parser and mib code generator
-<li>Collapse the CMU/HP code into one set of classes.
-<li>Add full V2c support.
-<li>Size/Speed improvements
-</sl>
-
-<h1>References</h1>
-<ul>
-<li><a href="http://www.ece.ucdavis.edu/ucd-snmp/">UCD SNMP</a>
-<li><a href="news://comp.protocols.snmp">comp.protocols.snmp</a>
-<li><a href="http://snmp.cs.utwente.nl">University of Twente</a>
-<li><a href="http://www.cis.ohio-state.edu/hypertext/faq/bngusenet/comp/protocols/snmp/top.html">SNMP FAQ</a>
-<li><a href="http://www.adventnet.com/">Java based SNMP tools from Ardent</a>
-<li><a href="http://misa.zurich.ibm.com/Webbin/">IBM SNMP/CMIP research</a>
-</ul>
-</html>
diff --git a/ASNMP/asnmp/ASNMP_Export.h b/ASNMP/asnmp/ASNMP_Export.h
deleted file mode 100644
index e4c9898f3f5..00000000000
--- a/ASNMP/asnmp/ASNMP_Export.h
+++ /dev/null
@@ -1,58 +0,0 @@
-
-// -*- C++ -*-
-// $Id$
-// Definition for Win32 Export directives.
-// This file is generated automatically by generate_export_file.pl ASNMP
-// ------------------------------
-#ifndef ASNMP_EXPORT_H
-#define ASNMP_EXPORT_H
-
-#include "ace/config-all.h"
-
-#if defined (ACE_AS_STATIC_LIBS) && !defined (ASNMP_HAS_DLL)
-# define ASNMP_HAS_DLL 0
-#endif /* ACE_AS_STATIC_LIBS && ! ASNMP_HAS_DLL */
-
-#if !defined (ASNMP_HAS_DLL)
-# define ASNMP_HAS_DLL 1
-#endif /* ! ASNMP_HAS_DLL */
-
-#if defined (ASNMP_HAS_DLL) && (ASNMP_HAS_DLL == 1)
-# if defined (ASNMP_BUILD_DLL)
-# define ASNMP_Export ACE_Proper_Export_Flag
-# define ASNMP_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T)
-# define ASNMP_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# else /* ASNMP_BUILD_DLL */
-# define ASNMP_Export ACE_Proper_Import_Flag
-# define ASNMP_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T)
-# define ASNMP_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-# endif /* ASNMP_BUILD_DLL */
-#else /* ASNMP_HAS_DLL == 1 */
-# define ASNMP_Export
-# define ASNMP_SINGLETON_DECLARATION(T)
-# define ASNMP_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
-#endif /* ASNMP_HAS_DLL == 1 */
-
-// Set ASNMP_NTRACE = 0 to turn on library specific tracing even if
-// tracing is turned off for ACE.
-#if !defined (ASNMP_NTRACE)
-# if (ACE_NTRACE == 1)
-# define ASNMP_NTRACE 1
-# else /* (ACE_NTRACE == 1) */
-# define ASNMP_NTRACE 0
-# endif /* (ACE_NTRACE == 1) */
-#endif /* !ASNMP_NTRACE */
-
-#if (ASNMP_NTRACE == 1)
-# define ASNMP_TRACE(X)
-#else /* (ASNMP_NTRACE == 1) */
-# if !defined (ACE_HAS_TRACE)
-# define ACE_HAS_TRACE
-# endif /* ACE_HAS_TRACE */
-# define ASNMP_TRACE(X) ACE_TRACE_IMPL(X)
-# include "ace/Trace.h"
-#endif /* (ASNMP_NTRACE == 1) */
-
-#endif /* ASNMP_EXPORT_H */
-
-// End of auto generated file.
diff --git a/ASNMP/asnmp/ChangeLog b/ASNMP/asnmp/ChangeLog
deleted file mode 100644
index 8d82c1aa36c..00000000000
--- a/ASNMP/asnmp/ChangeLog
+++ /dev/null
@@ -1,227 +0,0 @@
-Wed Jan 4 22:50:09 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com>
-
- * ChangeLog:
-
- Untabify.
- Delete-trailing-whitespace.
-
- Added "Local Variables" section defining "add-log-time-format"
- to a really ugly lambda expression that formats changelog
- timestamps in UTC and works with both GNU Emacs and XEmacs.
-
-Fri May 7 11:40:25 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * pdu.cpp (agent_error_reason):
-
- Really fixed mismatched sprintf() format specifiers this time
- around.
-
-Thu May 6 11:13:25 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * oid.cpp (operator+=, OidToStr):
- * pdu.cpp (agent_error_reason):
-
- Fixed warnings regarding mismatch format specifiers and
- arguments to sprintf().
-
-Thu May 6 11:05:01 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * gauge.h:
-
- Nuked trailing white space.
-
-Fri Apr 23 11:23:21 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * oid.cpp:
-
- Missed some bool return types for equality operators.
-
-Thu Apr 22 23:03:48 2004 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * address.cpp:
- * address.h:
- * octet.cpp:
- * octet.h:
- * oid.cpp:
- * oid.h:
- * target.cpp:
- * target.h:
- * vb.cpp:
- * vb.h:
-
- Changed all return types for equality, relational and logical
- operators to "bool", as is the norm for modern C++.
-
-Fri Aug 29 07:57:05 2003 Ossama Othman <ossama@dre.vanderbilt.edu>
-
- * octet.cpp (to_string_hex):
-
- Fixed "string literal converted to char *" warning. String
- literals are now considered "const" by standard C++.
-
-Tue Mar 16 16:28:14 1999 David L. Levine <levine@cs.wustl.edu>
-
- * address.cpp, address.h, asn1.cpp, asn1.h, counter.cpp, ctr64.cpp,
- gauge.cpp, integer.cpp, octet.cpp, oid.cpp, pdu.cpp, sagent.cpp,
- snmp.cpp, target.cpp, timetick.cpp, transaction.cpp, vb.cpp,
- wpdu.cpp:
- replaced TRUE with 1, and FALSE and NULL with 0. Thanks to
- Achint Sandhu <sandhu@nortelnetworks.com> for reporting that
- TRUE and FALSE weren't define on his Linux platform.
-
- * wpdu.cpp (set_trap_info): wrapped condition with () to
- avoid g++ warning about using result of an assignment as
- the condition.
-
- * ctr64.cpp: made MAX64 unsigned, to avoid warning about it
- being to big to be signed.
-
-Wed Jul 15 20:27:23 1998 Mike MacFaden <mrm@tango.cs.wustl.edu>
- * asn1.cpp - Hien Nguyen <hnguyen@apexgrp.com> fixed these bugs:
-
- Problem: The V1 trap agent-addr field tag value is OCTET STRING
- instead of IPADDRESS, and the time stamp field tag value is INTEGER
- instead of TIME TICKS.
-
- Fix: Change cmu_snmp::build() to pass in the correct type for agent-addr
- and time stamp.
-
- 2. Problem: The V1 trap enterprise OID is corrupted after is was set in
- wpdu constructor.
-
- Fix: In wpdu::set_trap_info(), the raw_pdu enterprise OID pointer was
- assigned to the raw data of an enterprise Oid object on the stack.
- Changed to perform an ACE_NEW_RETURN on the raw_pdu->enterprise and
- perform a memcpy to copy the OID. The allocated memory is freed in
- cmu_snmp::free_pdu() as currently implemented.
-
- 3. The V1 trap agent-addr field is currently initialized to "0.0.0.0".
- I changed wpdu::set_trap_info to initialize it to the local host IP
- Address.
-
- 4. I noticed that the memory allocation for OID in asn1.cpp using
- ACE_NEW consistently use (OID length * size(oid)) as the size.
- Shouldn't it be simply OID length ? Since there are numerous instances
- of this usage in asn1.cpp, I have not fixed those. If you can double
- check and fix these, I appreciate it.
-
-
-Wed Aug 20 15:11:23 1997 Mike MacFaden <mrm@tango.cs.wustl.edu>
-
- * rebuilt Makefile using g++dep
-
- * pdu.h pdu.cpp initialization errors fixed
-
- * address.h address.cpp IpAddress::to_octet() added
-
-Fri Aug 1 19:23:52 1997 Mike MacFaden (mrm@mrm-ss20)
-
- * NOTES: This first version only tested on Solaris 2.5
-
- * review classes for thread safety. Current thread design only
- allows for one thread to safely access any ASNMP object created.
-
- * run purify test of get routine no -memory leaks.
-
- * verify both shared archive/static archive types work with
- example programs
-
- * << Globals Changes >>
-
- * tested only archiver library version
-
- * reformat code to use one brace style.
-
- * changed all manifest constants defined as _XX to XX_ to stay out
- of compiler namespace
-
- * change all OS calls to use ACE_OS:: portability layer, #include
- <ace/OS.h>
-
- * reformat code to use one consistent brace layout and redo
- header using ACE
-
- * remove semicolons on member functions foo{}; - not necessary
-
- * make get() methods const member functions
-
- * removed unnecessary casts that looked like this: and revamped
- all memory allocations via ACE_NEW macro
-
- new_oid = (SmiLPUINT32) new unsigned long [ smival.value.oid.len
-
- To
-
- ACE_NEW(new_oid, SmiUINT32[ smival.value.oid.len])
-
- * Collapsed default constructors with constructors to constructors
- with default arguments.
-
- * removed unused #include <iostream.h>
-
- * Added ACE_TRACE() to classes
-
- * change get_printable() to to_string() - there will be more java
- programmers in the future so this should be the first step...
-
- * removed ASYNC interface till it can be rebuilt using ACE patterns
-
- * Attempt to make interface more type strict but leaving generic
- interfaces as escape hatch. Example: CTarget becomes UdpTarget
- for UDP/IP based agents.
-
- * << Class Specific Changes >>
-
- * Oid class:
- - remove char * routines, simplify class
- - added suboid method and removed get_printable() overloads
-
- * CTarget class:
- - renamed to UdpTarget. Stay out of Microsoft Namespace per MSJ
- Article by Allen Hollub.
-
- * Varbind class:
- - remove generic set_value for char,int, etc. Too easy to get
- this wrong. Allow just types defined.
- - added overload for equality operator (==)
- - added new constructor to allow setting full vb state oid,value, exception
- - add to_string()
-
- * Address class:
- - change manifest constants to enums for address lengths, add IP V6 lens
-
- - add a netbios name class, still pretty worthless since I don't have spec
- in front of me yet...
-
- - rewrite resolver calls to be thread safe and cleaner by moving to two
- class (static) member functions:
-
- // thread safe routine to lookup ip address given hostname
- // return <> 0 on error
- static int resolve_to_addr(const char *hostname, in_addr& quad_addr);
-
- // thread safe routine to lookup name given ip address
- // return <> 0 on error
- static int resolve_to_hostname(const in_addr& quad_addr, char *hostname)
-
- * added some interrogation routines to class IpAddress:
- is_loopback() const;
-
- * Ctr64 class:
- - added constructor using long long datatype (needs to be made
- portable to NT
-
- * Pdu class: add to_string()
-
- * Classes added wpdu class:
- - a new adpater class between CMU and HP pdu, varbind data structures
-
- * transaction class:
- - implement get/getnext timeout and retry logic using ACE
- Reactor class, ACE_Time_Value
-
-Local Variables:
-mode: change-log
-add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time))
-indent-tabs-mode: nil
-End:
diff --git a/ASNMP/asnmp/Makefile.am b/ASNMP/asnmp/Makefile.am
deleted file mode 100644
index 71347a6d858..00000000000
--- a/ASNMP/asnmp/Makefile.am
+++ /dev/null
@@ -1,66 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-## Makefile.asnmp_lib.am
-
-noinst_LTLIBRARIES = libasnmp.la
-
-libasnmp_la_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP \
- -DASNMP_BUILD_DLL
-
-libasnmp_la_SOURCES = \
- address.cpp \
- asn1.cpp \
- counter.cpp \
- ctr64.cpp \
- gauge.cpp \
- integer.cpp \
- octet.cpp \
- oid.cpp \
- pdu.cpp \
- sagent.cpp \
- snmp.cpp \
- target.cpp \
- timetick.cpp \
- transaction.cpp \
- vb.cpp \
- wpdu.cpp
-
-noinst_HEADERS = \
- address.h \
- asn1.h \
- counter.h \
- ctr64.h \
- gauge.h \
- integer.h \
- octet.h \
- oid.h \
- pdu.h \
- sagent.h \
- snmp.h \
- target.h \
- timetick.h \
- transaction.h \
- vb.h \
- wpdu.h
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/asnmp/TODO b/ASNMP/asnmp/TODO
deleted file mode 100644
index 12beb91406b..00000000000
--- a/ASNMP/asnmp/TODO
+++ /dev/null
@@ -1,25 +0,0 @@
-This is the todo list aka wish list: feel free to add/implmement
-Fri Aug 1 19:40:55 PDT 1997
-
-0) collapse CMU and HP code - make this thing faster since it is really
- slow and bulky...
-
-1) implement response time statistics collection so that timeout can vary based
- on empirical response times
-
-2) Implement pdu fragmentation based on tooBig errors or app directed
- Snmp::set_pdu_max_size() command
-
-3) implement async interface
-
-4) make templatized version to implement sync/nonsync (thread safe version)
-
-5) add V2c when a real agent is in the field that supports it
-
-6) Add DISMAN support when IETF approves the Expression Mib
-
-7) way too many procedural case stmts in the code...
-
-8) add compare_right() method to be orthogonal to oid class.
-
-
diff --git a/ASNMP/asnmp/address.cpp b/ASNMP/asnmp/address.cpp
deleted file mode 100644
index 8231868bd89..00000000000
--- a/ASNMP/asnmp/address.cpp
+++ /dev/null
@@ -1,2705 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// address.cpp
-//
-// = DESCRIPTION
-// The Vb class is an encapsulation of the snmp variable binding.
-// This module contains the class definition for the variable binding (VB)
-// class. The VB class is an encapsulation of a SNMP VB. A VB object is
-// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid
-// objects and thus requires the Oid class. To use this class,
-// set oid, value then call valid() to be sure object was constructed correctly.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
- =====================================================================*/
-
-#include "asnmp/address.h"
-#include "ace/OS_NS_string.h"
-#include "ace/OS_NS_arpa_inet.h"
-#include "ace/OS_NS_netdb.h"
-#include "ace/OS_NS_stdlib.h"
-#include "ace/OS_NS_stdio.h"
-#include "ace/os_include/os_ctype.h"
-#include "ace/OS_Memory.h"
-
-ACE_RCSID(asnmp, address, "$Id$")
-
-//=================================================================
-//======== Abstract Address Class Implementation ==================
-//=================================================================
-
-// allow destruction of derived classes
-Address::~Address()
-{
-}
-
-
-//-----------------------------------------------------------------
-// is the address object valid?
-int Address::valid() const
-{
- return valid_flag;
-}
-
-//------------[ Address::trim_white_space( char * ptr) ]------------
-// destructive trim white space
-void Address::trim_white_space( char * ptr)
-{
- char *tmp;
-
- tmp = ptr;
- // skip leading white space
- while (*tmp==' ')tmp++;
- ACE_OS::strcpy(ptr,tmp);
-
- // find end of string
- while ((*tmp!=' ') && (*tmp !=0)) tmp++;
- if (*tmp!=0) *tmp=0;
-}
-
-//TM: this is not used nor needed, remove?
-//-----[ element access ]----------------------------------------------
-unsigned char& Address::operator[]( const int position)
-{
- if ( position < MAX_ADDR_SZ)
- return address_buffer[ position];
- else
- return address_buffer[0];
-}
-
-
-//-----------------------------------------------------------------------
-// overloaded equivlence operator, are two addresses equal?
-bool operator==( const Address &lhs, const Address &rhs)
-{
- if ( ACE_OS::strcmp( (const char*) lhs, (const char*)rhs)==0)
- return true;
- else
- return false;
-}
-
-//-----------------------------------------------------------------------
-// overloaded equivlence operator, are two addresses equal?
-bool operator!=( const Address &lhs, const Address &rhs)
-{
- return (!( lhs == rhs));
-}
-
-
-//------------------------------------------------------------------
-// overloaded > operator, is a1 > a2
-bool operator>( const Address &lhs, const Address &rhs)
-{
- if (ACE_OS::strcmp( (const char*) lhs, (const char*)rhs)>0)
- return true;
- else
- return false;
-}
-
-// overloaded >= operator, is a1 > a2
-bool operator>=( const Address &lhs,const Address &rhs)
-{
- if (( lhs > rhs) || ( lhs == rhs))
- return true;
- else
- return false;
-}
-
-// overloaded < operator, is a1 <= a2
-bool operator<=( const Address &lhs,const Address &rhs)
-{
- if (( lhs < rhs) || ( lhs == rhs))
- return true;
- else
- return false;
-
-}
-
-
-//-----------------------------------------------------------------
-// overloaded < operator, is a1 < a2
-bool operator<( const Address &lhs, const Address &rhs)
-{
- if (ACE_OS::strcmp( (const char*) lhs, (const char*)rhs)<0)
- return true;
- else
- return false;
-}
-
-//------------------------------------------------------------------
-// equivlence operator overloaded, are an address and a string equal?
-bool operator==( const Address &lhs,const char *rhs)
-{
- if (!rhs && !lhs.valid())
- return true;
- if (ACE_OS::strcmp( (const char *) lhs, rhs)== 0)
- return true;
- else
- return false;
-}
-
-//------------------------------------------------------------------
-// not equal operator overloaded, are an address and a string not equal?
-bool operator!=( const Address &lhs,const char *rhs)
-{
- return (!( lhs == rhs));
-}
-
-//------------------------------------------------------------------
-// overloaded > , is a > inaddr
-bool operator>( const Address &lhs,const char *rhs)
-{
- if (!rhs)
- return lhs.valid(); // if lhs valid then > 0, else invalid !> 0
- if (ACE_OS::strcmp( (const char *) lhs, rhs)> 0)
- return true;
- else
- return false;
-}
-
-//------------------------------------------------------------------
-// overloaded >= , is a >= inaddr
-bool operator>=( const Address &lhs,const char *rhs)
-{
- if (!rhs)
- return true; // always >= 0
- if (ACE_OS::strcmp( (const char *) lhs, rhs)>= 0)
- return true;
- else
- return false;
-}
-
-//-----------------------------------------------------------------
-// overloaded < , are an address and a string equal?
-bool operator<( const Address &lhs,const char *rhs)
-{
- if (!rhs)
- return false; // always >= 0
- if (ACE_OS::strcmp( (const char *) lhs, rhs)< 0)
- return true;
- else
- return false;
-}
-
-//-----------------------------------------------------------------
-// overloaded <= , is a <= inaddr
-bool operator<=( const Address &lhs,const char *rhs)
-{
- if (!rhs)
- return !lhs.valid(); // invalid == 0, else valid > 0
- if (ACE_OS::strcmp( (const char *) lhs, rhs) <= 0)
- return true;
- else
- return false;
-}
-
-
-//=====================================================================
-//============ IPAddress Implementation ===============================
-//=====================================================================
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 IpAddress::get_syntax()
-{
- return sNMP_SYNTAX_IPADDR;
-}
-
-//-----[ IP Address copy constructor ]---------------------------------
-IpAddress::IpAddress(const IpAddress &ipaddr)
- : Address (ipaddr)
-{
- // always initialize what type this object is
- smival.syntax = sNMP_SYNTAX_IPADDR;
- smival.value.string.len =IPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- iv_friendly_name_[0] = 0;
- iv_friendly_name_status_ = 0;
- valid_flag = ipaddr.valid_flag;
- if (valid_flag) {
- ACE_OS::memcpy(address_buffer, ipaddr.address_buffer,IPV4LEN);
- ACE_OS::strcpy( iv_friendly_name_, ipaddr.iv_friendly_name_);
- }
-
- IpAddress::format_output();
-}
-
-
-//-------[ default construct, an IP address with a string ]---------------------
-IpAddress::IpAddress( const char *inaddr): Address()
-{
- // always initialize what type this object is
- smival.syntax = sNMP_SYNTAX_IPADDR;
- smival.value.string.len = IPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- if (ACE_OS::strlen(inaddr) == 0) {
-
- valid_flag = 0;
- iv_friendly_name_[0] = 0;
- iv_friendly_name_status_ = 0;
- IpAddress::format_output();
- return;
- }
-
- // parse_address initializes valid, address_buffer & iv_friendly_name_
- valid_flag = parse_address(inaddr);
- IpAddress::format_output();
-}
-
-
-//-----[ construct an IP address with a GenAddress ]---------------------
-IpAddress::IpAddress( const GenAddress &genaddr)
-{
- // always initialize what type this object is
- smival.syntax = sNMP_SYNTAX_IPADDR;
- smival.value.string.len = IPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- iv_friendly_name_[0] = 0;
- iv_friendly_name_status_ = 0;
- // allow use of an ip or udp genaddress
- if (genaddr.get_type() == type_ip) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the IP address data
- IpAddress temp_ip( (const char *) genaddr);
- *this = temp_ip;
- }
- }
- else
- if (genaddr.get_type() == type_udp) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the IP address data
- UdpAddress temp_udp( (const char *) genaddr);
- *this = temp_udp;
- }
- }
- IpAddress::format_output();
-}
-
-//-----[ destructor ]--------------------------------------------------
-IpAddress::~IpAddress()
-{
-}
-
-// assumes member data is word aligned to avoid sigbus
-int IpAddress::is_loopback() const
-{
- if (valid()) {
- return (*(u_long *)&address_buffer == INADDR_LOOPBACK);
- }
- return 0;
-}
-
-int IpAddress::is_multicast() const
-{
- if (valid()) {
- return (IN_MULTICAST(*(u_long *)&address_buffer));
- }
- return 0;
-}
-
-// Private addressess not are not assignable in the Internet, they are
-// defined in RFC 1597 as: 10, 172.16, and 192.168.0
-// Some companies use them internally and apply NAT to allow translation
-// instead of paying for ip networks.
-// Cisco IOS devices can provide NAT aka Network Address Translation
-// but don't expect SNMP based networks to handle cross-NAT address spaces.
-// assumes storage in network byte order mrm@cisco.com 7/28/97
-
-int IpAddress::is_private() const
-{
- if (valid()) {
- if (address_buffer[0] == 10)
- return 1;
- if (address_buffer[0] == 172 && address_buffer[1] == 16)
- return 1;
- if (address_buffer[0] == 192 && address_buffer[1] == 168 &&
- address_buffer[2] == 0)
- return 1;
- }
- return 0;
-}
-
-
-// convert address into octet string format in network byte order
-void IpAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-
-int IpAddress::is_broadcast() const
-{
- if (valid()) {
- return ( (*(u_long *)&address_buffer) & INADDR_BROADCAST);
- }
- return 0;
-}
-
-//-----[ IP Address general = operator ]-------------------------------
-SnmpSyntax& IpAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will get set 1 if really valid
- iv_friendly_name_[0]=0;
-
- if (val.valid()) {
- switch (val.get_syntax()) {
- case sNMP_SYNTAX_IPADDR:
- case sNMP_SYNTAX_OCTETS:
- if (((IpAddress &)val).smival.value.string.len ==IPV4LEN) {
- ACE_OS::memcpy(address_buffer,
- ((IpAddress &)val).smival.value.string.ptr,IPV4LEN);
- valid_flag = 1;
- }
- break;
-
- // NOTE: as a value add, other types could have "logical"
- // mappings, i.e. integer32 and unsigned32
- }
- }
- IpAddress::format_output();
- return *this;
-}
-
-//------[ assignment to another ipaddress object overloaded ]-----------------
-IpAddress& IpAddress::operator=( const IpAddress &ipaddress)
-{
- // protect against assignment from itself
- if ( this == &ipaddress )
- return *this;
-
- valid_flag = ipaddress.valid_flag;
- iv_friendly_name_[0]=0;
-
- if (valid_flag) {
- ACE_OS::memcpy(address_buffer, ipaddress.address_buffer, IPV4LEN);
- ACE_OS::strcpy(iv_friendly_name_, ipaddress.iv_friendly_name_);
- }
- IpAddress::format_output();
- return *this;
-}
-
-
-//--------[ create a new instance of this Value ]-----------------------
-SnmpSyntax *IpAddress::clone() const
-{
- return (SnmpSyntax *) new IpAddress(*this);
-}
-
-//-------[ return the Fully Qualified Domain Name ]----------------------
-const char *IpAddress::resolve_hostname(int &status)
-{
- if ((iv_friendly_name_[0] == 0) && valid_flag)
- addr_to_friendly();
- status = iv_friendly_name_status_;
- return iv_friendly_name_;
-}
-
-// parse a dotted string
-int IpAddress::parse_dotted_ipstring( const char *inaddr)
-{
- char *ip_token;
- int token_count=0;
- unsigned int value;
- int error_status = 0;
- char temp[MAXHOSTNAMELEN +1]; // temp buffer for destruction
- int z,w;
-
- // check len, an ip can never be bigger than 15
- // 123456789012345
- // XXX.XXX.XXX.XXX
- if ( !inaddr || (ACE_OS::strlen( inaddr) > 30))
- return 0;
- ACE_OS::strcpy( temp, inaddr);
- trim_white_space( temp);
- if ( ACE_OS::strlen( temp) > 15)
- return 0;
-
- // must only have three dots
- // strtok will not catch this !
- char *ptr = temp;
- int dot_count = 0;
- while ( *ptr != 0) {
- if ( *ptr == '.') dot_count++;
- ptr++;
- }
- if ( dot_count != 3)
- return 0;
-
- // look for dot token separator
- ip_token = ACE_OS::strtok( (char *) temp,".");
-
- // while more tokens..
- while ( ip_token != 0) {
- // verify that the token is all numerics
- w = ACE_OS::strlen( ip_token);
- if (w>3)
- return 0;
- for (z=0;z<w;z++)
- if (( ip_token[z] < '0') || ( ip_token[z] > '9'))
- return 0;
-
- value = ( unsigned int) strtod(ip_token,0);
- if (( value > 0)&& ( value <=255))
- address_buffer[token_count] = (unsigned char) value;
- else
- if (ACE_OS::strcmp(ip_token,"0")==0)
- address_buffer[token_count]= (unsigned char) 0;
- else
- error_status = 1;
- token_count++;
- ip_token = ACE_OS::strtok( 0, ".");
- }
-
- // gota be four in len
- if ( token_count != 4)
- return 0;
-
- // any parsing errors?
- if ( error_status)
- return 0;
-
- return 1;
-}
-
-//-----[ IP Address parse Address ]---------------------------------
-int IpAddress::parse_address( const char *inaddr)
-{
- // parse the input char array
- // fill up internal buffer with four ip bytes
- // set and return validity flag
-
- in_addr ipAddr;
- char ds[MAXHOSTNAMELEN +1];
-
- // intialize the friendly_name member variable
- iv_friendly_name_[0] = 0;
- iv_friendly_name_status_ = 0;
-
- // is this a dotted IP notation string or
- // a friendly name
- if ( parse_dotted_ipstring( inaddr)) {
-
- // since this is a valid dotted string
- // don't do any DNS (Performance!)
- return 1;
- }
- else {
- int rc;
- if ((rc = resolve_to_address(inaddr, ipAddr)) == 0) {
-
- // now lets check out the dotted string
- ACE_OS::strncpy( ds, ACE_OS::inet_ntoa(ipAddr), MAXHOSTNAMELEN);
-
- if ( !parse_dotted_ipstring( ds))
- return 0;
-
- // save the friendly name
- ACE_OS::strcpy( iv_friendly_name_, inaddr);
-
- } // end if lookup result
- else {
- iv_friendly_name_status_ = rc;
- return 0;
- }
- } // end else not a dotted string
- return 1;
-}
-
-// using the currently defined address, do a DNS
-// and try to fill up the name
-int IpAddress::addr_to_friendly()
-{
- in_addr ipAddr;
- long result = ACE_OS::inet_addr(to_string());
- if (result == -1)
- return -1; // expected a dotted quad!
-
- ipAddr.s_addr = result;
-
- // set iv_friendly_name_ from ipAddr
- if (resolve_to_hostname(ipAddr, iv_friendly_name_) == 0) {
- return 0;
- }
- else {
-#if defined (VXWORKS)
- // VxWorks doesn't have h_errno
- iv_friendly_name_status_ = errno;
-#else
- iv_friendly_name_status_ = h_errno;
-#endif /* VXWORKS */
- return iv_friendly_name_status_;
- }
-}
-
-// static aka class member function (1.2.3.4 -> foo.com)
-int IpAddress::resolve_to_hostname(const in_addr& quad_addr, char *hostname)
-{
- struct hostent lookupResult;
- int loc_errno = 0;
- ACE_HOSTENT_DATA buffer;
- ACE_OS::memset(&lookupResult, 0, sizeof(struct hostent));
- ACE_OS::memset(&buffer, 0, sizeof(ACE_HOSTENT_DATA));
-
- // reverse lookup (requires in-addr.arpa to be setup in DNS
- if (ACE_OS::gethostbyaddr_r((const char *)&quad_addr.s_addr, IPV4LEN,
- AF_INET, &lookupResult, buffer, &loc_errno)) {
-
- // verify right type of record
- if (lookupResult.h_addrtype == AF_INET &&
- lookupResult.h_length == IPV4LEN) {
- ACE_OS::strcpy( hostname, lookupResult.h_name);
- // setup multiple entries
- return 0;
- }
- else {
- ACE_ASSERT(0); // todo add trace and debug and dump
- return -1; // wrong resource record type
- }
- }
-
- return loc_errno;
-}
-
-// static aka class member function (foo.com -> 1.2.3.4)
-int IpAddress::resolve_to_address(const char *hostname, in_addr& quad_addr)
-{
- struct hostent lookupResult;
- ACE_HOSTENT_DATA buffer;
- ACE_OS::memset(&buffer, 0, sizeof(ACE_HOSTENT_DATA));
- ACE_OS::memset(&lookupResult, 0, sizeof(struct hostent));
- int loc_errno = 0;
- if (ACE_OS::gethostbyname_r( hostname, &lookupResult, buffer, &loc_errno)) {
- if (lookupResult.h_length == sizeof(in_addr) &&
- lookupResult.h_addrtype == AF_INET) {
- ACE_OS::memcpy((void *) &quad_addr,
- (void *) lookupResult.h_addr_list[0], sizeof(in_addr));
- return 0;
- }
- else
- return -1; // wrong address size
- }
- return loc_errno;
-}
-
-//----[ IP address char * cast ]--------------------------------------
-IpAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-//----[ IP address get char representation ]--------------------------
-const char * IpAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-//----[ IP address format output ]------------------------------------
-void IpAddress::format_output()
-{
- // if valid format else null it
- if ( valid_flag)
- ACE_OS::sprintf( (char *) output_buffer,"%d.%d.%d.%d",address_buffer[0],
- address_buffer[1], address_buffer[2], address_buffer[3]);
- else
- output_buffer[0] = 0;
-}
-
-//------[ return the type ]----------------------------------
-addr_type IpAddress::get_type() const
-{
- return type_ip;
-}
-
-//-----------------------------------------------------------------
-// logically and two IPaddresses and
-// return the new one
-void IpAddress::mask( const IpAddress& ipaddr)
-{
- if ( this->valid() && ipaddr.valid()) {
- this->address_buffer[0] = this->address_buffer[0] & ipaddr.address_buffer[0];
- this->address_buffer[1] = this->address_buffer[1] & ipaddr.address_buffer[1];
- this->address_buffer[2] = this->address_buffer[2] & ipaddr.address_buffer[2];
- this->address_buffer[3] = this->address_buffer[3] & ipaddr.address_buffer[3];
- format_output();
- }
-
-}
-
-//=======================================================================
-//========== DNS Iterator Implementation ================================
-//=======================================================================
-
-
-Address_Iter::Address_Iter(const char *hostname): valid_(0), count_(0),
- entry_(0)
-{
- ACE_OS::memset(&buffer_, 0, sizeof(ACE_HOSTENT_DATA));
- ACE_OS::memset(&lookupResult_, 0, sizeof(struct hostent));
- if (ACE_OS::inet_addr(hostname) == (unsigned long) -1)
- valid_ = query_dns(hostname);
- else {
- ACE_ASSERT(0); // don't support dot-quad lookup yet
- }
-
- // count number of hostnames
- int n;
- char **pc;
- for (n = 0, pc = lookupResult_.h_addr_list; *pc != 0; ++n, ++pc);
- count_ = n; // plus first one
- entry_ = lookupResult_.h_addr_list;
-}
-
-int Address_Iter::valid() const
-{
- return (valid_ == 1);
-}
-
-int Address_Iter::how_many_addresses()
-{
- return count_;
-}
-
-// return next entry, rc = 0, if entry is null return 0
-int Address_Iter::next(IpAddress& addr)
-{
- if (!entry_ || *entry_ == 0)
- return 1;
-
- IpAddress tmp(*entry_++); // return data
- addr = tmp;
- if (*entry_ == 0)
- return 1;
- return 0;
-}
-
-// query DNS here
-int Address_Iter::query_dns(const char *hostname)
-{
- int loc_errno = 0;
- if (ACE_OS::gethostbyname_r( hostname, &lookupResult_, buffer_,
- &loc_errno)) {
- if (lookupResult_.h_length == sizeof(IPV4LEN) &&
- lookupResult_.h_addrtype == AF_INET) {
- return 0;
- }
- else
- return -1; // wrong address size
- }
- return loc_errno;
-}
-
-//=======================================================================
-//========== Udp Address Implementation =================================
-//=======================================================================
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 UdpAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-//-----------------[ construct an Udp address with another Udp address ]---
-UdpAddress::UdpAddress( const UdpAddress &udpaddr):IpAddress(udpaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = UDPIPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- // Copy the port value
- set_port(udpaddr.get_port());
- format_output();
-}
-
-// default constructor with a dotted string
-UdpAddress::UdpAddress( const char *inaddr):IpAddress()
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // Inherits IP Address attributes
- // Always initialize (override) what type this object is
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = UDPIPV4LEN;
- smival.value.string.ptr = address_buffer;
- set_port(0);
- format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = UDPIPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *)inaddr);
- format_output();
-}
-
-//-----------------[ construct a UdpAddress from a GenAddress ]--------------
-UdpAddress::UdpAddress( const GenAddress &genaddr):IpAddress()
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = UDPIPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- unsigned int port = 0;
- valid_flag = 0;
-
- // allow use of an ip or udp genaddress
- if (genaddr.get_type() == type_udp)
- {
- valid_flag = genaddr.valid();
- if ( valid_flag)
- {
- // copy in the IP address data
- UdpAddress temp_udp( (const char *) genaddr);
- *this = temp_udp;
-
- // port info since are making an UpAddress
- port = temp_udp.get_port();
- }
- }
- else
- if (genaddr.get_type() == type_ip)
- {
- valid_flag = genaddr.valid();
- if ( valid_flag)
- {
- // copy in the IP address data
- IpAddress temp_ip( (const char *) genaddr);
- *this = temp_ip;
- }
- }
- set_port(port);
- format_output();
-}
-
-
-//--------[ construct a udp from an IpAddress ]--------------------------
-UdpAddress::UdpAddress( const IpAddress &ipaddr):IpAddress(ipaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = UDPIPV4LEN;
- smival.value.string.ptr = address_buffer;
-
- set_port(0);
- format_output();
-}
-
-
-//-----[ destructor ]--------------------------------------------------
-UdpAddress::~UdpAddress()
-{
-}
-
-
- // copy an instance of this Value
-SnmpSyntax& UdpAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag=0; // will get set 1 if really valid
- if (val.valid()){
- switch (val.get_syntax()){
- case sNMP_SYNTAX_IPADDR:
- {
- UdpAddress temp_udp(val.to_string());
- *this = temp_udp; // valid_flag is set by the udp assignment
- }
- break;
-
- case sNMP_SYNTAX_OCTETS:
- if (((UdpAddress &)val).smival.value.string.len == UDPIPV4LEN){
- ACE_OS::memcpy(address_buffer,
- ((UdpAddress &)val).smival.value.string.ptr, UDPIPV4LEN);
- iv_friendly_name_[0] = 0;
- valid_flag = 1;
- }
- break;
-
- // NOTE: as a value add, other types could have "logical"
- // mappings, i.e. integer32 and unsigned32
- }
- }
- format_output();
- return *this;
-}
-
- // assignment to another UdpAddress object overloaded
-UdpAddress& UdpAddress::operator=( const UdpAddress &udpaddr)
-{
- // protect against assignment from itself
- if ( this == &udpaddr )
- return *this;
-
- (IpAddress &)*this = udpaddr; // use ancestor assignment for ipaddr value
- set_port(udpaddr.get_port()); // copy to port value
- format_output();
- return *this;
-}
-
-
-//-----[ IP Address parse Address ]---------------------------------
-int UdpAddress::parse_address( const char *inaddr)
-{
- char buffer[MAXHOSTNAMELEN +1];
-
- unsigned short port = 0;
- if (inaddr && (ACE_OS::strlen( inaddr)< MAXHOSTNAMELEN +1))
- ACE_OS::strcpy( buffer, inaddr);
- else {
- valid_flag = 0;
- return 0;
- }
- // look for port info @ the end of the string
- // port can be delineated by a ':' or a '/'
- // if neither are present then just treat it
- // like a normal IpAddress
- char *tmp;
- tmp = ACE_OS::strstr( buffer,":");
- if (tmp==0)
- tmp = ACE_OS::strstr(buffer,"/");
-
- if ( tmp != 0) {
- *tmp=0; // null terminator
- tmp++;
- port = ACE_OS::atoi( tmp);
- }
-
- set_port(port);
- return IpAddress::parse_address( buffer);
-}
-
-
-//----------[ create a new instance of this Value ]------------------------
-SnmpSyntax *UdpAddress::clone() const
-{
- return (SnmpSyntax *) new UdpAddress(*this);
-}
-
-//--------[ set the port number ]---------------------------------------
-void UdpAddress::set_port( const unsigned short p)
-{
- unsigned short port_nbo = htons(p);
- ACE_OS::memcpy(&address_buffer[IPV4LEN], &port_nbo, 2);
- format_output();
-}
-
-//---------[ get the port number ]--------------------------------------
-unsigned short UdpAddress::get_port() const
-{
- if (valid_flag) {
- unsigned short port_nbo;
- ACE_OS::memcpy(&port_nbo, &address_buffer[IPV4LEN], 2);
- return ntohs(port_nbo);
- }
- else
- return 0; // don't use uninitialized memory
-}
-
-//------[ return the type ]--------------------------------------------
-addr_type UdpAddress::get_type() const
-{
- return type_udp;
-}
-
-//----[ UDP address char * cast ]--------------------------------------
-UdpAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-//----[ UDP address get char representation ]--------------------------
-const char * UdpAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-// make format same as ACE_INET_Addr class (addr:port)
-void UdpAddress::format_output()
-{
- IpAddress::format_output(); // allow ancestors to format their buffers
-
- // if valid format else null it
- if ( valid_flag)
- ACE_OS::sprintf( (char *) output_buffer,"%s:%d",
- IpAddress::to_string(),
- get_port() );
- else
- output_buffer[0] = 0;
-}
-
-
-//=======================================================================
-//=========== Netbios Address Implementation ============================
-//=======================================================================
-
-void NetbiosAddress::format_output()
-{
- if ( valid_flag)
- ACE_OS::memcpy(output_buffer, address_buffer, NETBIOSLEN);
- else
- output_buffer[0] = 0;
-}
-
-void NetbiosAddress::InitNBAddr(const char *inaddr)
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = NETBIOSLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag=0;
- NetbiosAddress::format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *) inaddr);
- NetbiosAddress::format_output();
-}
-
-// TODO: how to handle addresses < 15 chars (zero out or pad with ' ')
-NetbiosAddress::NetbiosAddress( const char *inaddr)
-{
- InitNBAddr(inaddr);
-
-}
-
-NetbiosAddress::NetbiosAddress( const char *inaddr, nb_service svc)
-{
- InitNBAddr(inaddr);
- address_buffer[15] = svc;
-}
-
-// TODO: go back over ms/ibm specs and verify this
-// 16 chars, 15 can be any character, 16th is service number between 0 and 20
-// names beginning with IBM are reserved, and hence invalid
-// and doubt IBM would use this class anyway
-int NetbiosAddress::parse_address(const char *address)
-{
- if (ACE_OS::strlen(address) > NETBIOSLEN)
- return 0; // invalid
-
- if (ACE_OS::strncmp(address, "IBM", 3) == 0)
- return 0; // invalid
-
- // addresses are free form but this check may need to be expose to user
- //
- //if (address[15] < nb_workstation || address[15] > nb_server)
- // return 0; //invalid service type
-
- ACE_OS::memset(address_buffer, 0, NETBIOSLEN);
- ACE_OS::memcpy(address_buffer, address, NETBIOSLEN);
-
- return 1; // valid
-}
-
-NetbiosAddress::NetbiosAddress( const NetbiosAddress& nbaddr)
- : Address (nbaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = NETBIOSLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = nbaddr.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, nbaddr.address_buffer, NETBIOSLEN);
- NetbiosAddress::format_output();
-}
-
-NetbiosAddress::NetbiosAddress( const GenAddress& genaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = NETBIOSLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- // allow use of an ipx or ipxsock address
- if ( (genaddr.get_type() == type_nb) ) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the Ipx address data
- NetbiosAddress temp_nb( (const char *) genaddr);
- *this = temp_nb;
- }
- }
- NetbiosAddress::format_output();
-}
-
-NetbiosAddress::~NetbiosAddress()
-{
-}
-
-const char *NetbiosAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-void NetbiosAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-NetbiosAddress& NetbiosAddress::operator=( const NetbiosAddress &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will set to 1 if really valid
- if (val.valid()) {
- switch (((NetbiosAddress *) &val)->get_syntax()) {
- case sNMP_SYNTAX_OCTETS:
- ACE_OS::memcpy(address_buffer,
- ((NetbiosAddress &)val).smival.value.string.ptr, NETBIOSLEN);
- valid_flag = 1;
- break;
- }
- }
- NetbiosAddress::format_output();
- return *this;
-}
-
-nb_service NetbiosAddress::get_service_type() const
-{
- return (nb_service) address_buffer[15];
-}
-
-void NetbiosAddress::set_service_type(nb_service nbservice)
-{
- address_buffer[15] = nbservice;
- NetbiosAddress::format_output();
-}
-
-NetbiosAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-SnmpSyntax& NetbiosAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will set to 1 if really valid
- if (val.valid()) {
- switch (val.get_syntax()) {
- case sNMP_SYNTAX_OCTETS:
- if (((NetbiosAddress &)val).smival.value.string.len == NETBIOSLEN) {
- ACE_OS::memcpy(address_buffer,
- ((NetbiosAddress &)val).smival.value.string.ptr, NETBIOSLEN);
- valid_flag=1;
- }
- break;
- }
- }
- NetbiosAddress::format_output();
- return *this;
-}
-
-SnmpSyntax *NetbiosAddress::clone() const
-{
- return (SnmpSyntax *) new NetbiosAddress(*this);
-}
-
-SmiUINT32 NetbiosAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-addr_type NetbiosAddress::get_type() const
-{
- return type_nb;
-}
-
-//=======================================================================
-//=========== IPX Address Implementation ================================
-//=======================================================================
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 IpxAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-
-//----------[ default constructor with a string arg ]---------------------------
-IpxAddress::IpxAddress( const char *inaddr):Address( )
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXLEN;
- smival.value.string.ptr = address_buffer;
-
- separator = '\0';
- valid_flag=0;
- IpxAddress::format_output();
- return;
- }
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXLEN;
- smival.value.string.ptr = address_buffer;
-
- separator = '\0';
- valid_flag = parse_address( (char *) inaddr);
- IpxAddress::format_output();
-}
-
-
-//-----[ IPX Address copy constructor ]----------------------------------
-IpxAddress::IpxAddress(const IpxAddress &ipxaddr)
- : Address (ipxaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXLEN;
- smival.value.string.ptr = address_buffer;
-
- separator = '\0';
- valid_flag = ipxaddr.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, ipxaddr.address_buffer, IPXLEN);
- IpxAddress::format_output();
-}
-
-
-//----[ construct an IpxAddress from a GenAddress ]---------------------------
-IpxAddress::IpxAddress( const GenAddress &genaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- // allow use of an ipx or ipxsock address
- if ( (genaddr.get_type() == type_ipx) ) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the Ipx address data
- IpxAddress temp_ipx( (const char *) genaddr);
- *this = temp_ipx;
- }
- }
- else
- if ( (genaddr.get_type() == type_ipxsock) ) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the Ipx address data
- IpxSockAddress temp_ipxsock( (const char *) genaddr);
- *this = temp_ipxsock;
- }
- }
- IpxAddress::format_output();
-}
-
-
-//-----[ destructor ]--------------------------------------------------
-IpxAddress::~IpxAddress()
-{
-}
-
-
-//-----[ IPX Address general = operator ]-------------------------------
-SnmpSyntax& IpxAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag=0; // will set to 1 if really valid
- if (val.valid()){
- switch (val.get_syntax()){
- case sNMP_SYNTAX_OCTETS:
- if (((IpxAddress &)val).smival.value.string.len == IPXLEN){
- ACE_OS::memcpy(address_buffer, ((IpxAddress &)val).smival.value.string.ptr, IPXLEN);
- valid_flag=1;
- }
- break;
- }
- }
- IpxAddress::format_output();
- return *this;
-}
-
-//--------[ assignment to another IpAddress object overloaded ]----------
-IpxAddress& IpxAddress::operator=( const IpxAddress &ipxaddress)
-{
- // protect against assignment from itself
- if ( this == &ipxaddress )
- return *this;
-
- valid_flag = ipxaddress.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, ipxaddress.address_buffer, IPXLEN);
- IpxAddress::format_output();
- return *this;
-}
-
-
-// create a new instance of this Value
-SnmpSyntax *IpxAddress::clone() const
-{
- return (SnmpSyntax *) new IpxAddress(*this);
-}
-
-//-----[ IPX Address parse Address ]-----------------------------------
-// Convert a string to a ten byte ipx address
-// On success sets validity 1 or 0
-//
-// IPX address format
-//
-// NETWORK ID| MAC ADDRESS
-// 01 02 03 04|05 06 07 08 09 10
-// XX XX XX XX|XX XX XX XX XX XX
-//
-// Valid input format
-//
-// XXXXXXXX.XXXXXXXXXXXX
-// Total length must be 21
-// Must have a separator in it
-// First string length must be 8
-// Second string length must be 12
-// Each char must take on value 0-F
-//
-//
-// Input formats recognized
-//
-// XXXXXXXX.XXXXXXXXXXXX
-// XXXXXXXX:XXXXXXXXXXXX
-// XXXXXXXX-XXXXXXXXXXXX
-// XXXXXXXX.XXXXXX-XXXXXX
-// XXXXXXXX:XXXXXX-XXXXXX
-// XXXXXXXX-XXXXXX-XXXXXX
-int IpxAddress::parse_address( const char *inaddr)
-{
- char unsigned *str1,*str2;
- char temp[30]; // don't destroy original
- char unsigned *tmp;
- size_t z, tmplen;
-
-
- // save the orginal source
- if (!inaddr || (ACE_OS::strlen( inaddr) >(sizeof(temp)-1))) return 0;
- ACE_OS::strcpy( temp, inaddr);
- trim_white_space( temp);
- tmplen = ACE_OS::strlen(temp);
-
- // bad total length check
- // 123456789012345678901
- // XXXXXXXX-XXXXXXXXXXXX 21 len
- //
- // XXXXXXXX-XXXXXX-XXXXXX 22 len
- // need at least 21 chars and no more than 22
- if ( (tmplen <21) || (tmplen >22))
- return 0;
-
- // convert the string to all lower case
- // this allows hex values to be in upper or lower
- for (z=0;z< tmplen;z++)
- temp[z] = tolower(temp[z]);
-
- // check for separated nodeid
- // if found remove it
- if (temp[15] == '-')
- {
- for(z=16;z<tmplen;z++)
- temp[z-1] = temp[z];
- temp[tmplen-1] = 0;
- }
-
- // no dot or colon separator check
- separator = temp[8];
- if (( separator != ':') &&
- ( separator != '.') &&
- ( separator != '-') &&
- ( separator != ' '))
- return 0;
-
- // separate the strings
- str1 = ( unsigned char *) temp;
- while( *str1 != separator) str1++;
- str2 = str1 + 1;
- *str1 = 0;
- str1= ( unsigned char *) temp;
-
- // check len of the network portion
- if ( ACE_OS::strlen((char *) str1) != 8)
- return 0;
-
- // check len of mac portion
- if ( ACE_OS::strlen( (char *) str2) != 12)
- return 0;
-
- // ok we like then lens, make sure that all chars are 0-f
- // check out the net id
- tmp = str1;
- while( *tmp != 0)
- if (((*tmp >= '0') && (*tmp <= '9'))|| // good 0-9
- ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f
- tmp++;
- else
- return 0;
-
- // check out the MAC address
- tmp = str2;
- while( *tmp != 0)
- if (((*tmp >= '0') && (*tmp <= '9'))|| // good 0-9
- ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f
- tmp++;
- else
- return 0;
-
- // convert to target string
- tmp = str1;
- while ( *tmp != 0)
- {
- if (( *tmp >= '0') && ( *tmp <= '9'))
- *tmp = *tmp - (char unsigned )'0';
- else
- *tmp = *tmp - (char unsigned) 'a' + (char unsigned) 10;
- tmp++;
- }
-
- // network id portion
- address_buffer[0] = (str1[0]*16) + str1[1];
- address_buffer[1] = (str1[2]*16) + str1[3];
- address_buffer[2] = (str1[4]*16) + str1[5];
- address_buffer[3] = (str1[6]*16) + str1[7];
-
- tmp = str2;
- while ( *tmp != 0)
- {
- if (( *tmp >= '0') && ( *tmp <= '9'))
- *tmp = *tmp - (char unsigned) '0';
- else
- *tmp = *tmp - (char unsigned) 'a'+ (char unsigned) 10;
- tmp++;
- }
-
- address_buffer[4] = (str2[0]*16) + str2[1];
- address_buffer[5] = (str2[2]*16) + str2[3];
- address_buffer[6] = (str2[4]*16) + str2[5];
- address_buffer[7] = (str2[6]*16) + str2[7];
- address_buffer[8] = (str2[8]*16) + str2[9];
- address_buffer[9] = (str2[10]*16) + str2[11];
-
- return 1;
-}
-
-//----[ IPX address char * cast ]--------------------------------------
-IpxAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-//----[ IPX address get char representation ]--------------------------
-const char * IpxAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-
-//----[ IPX address format output ]-------------------------------------
-void IpxAddress::format_output()
-{
- if ( valid_flag)
- ACE_OS::sprintf((char *) output_buffer,
- "%02x%02x%02x%02x%c%02x%02x%02x%02x%02x%02x",
- address_buffer[0],address_buffer[1],
- address_buffer[2],address_buffer[3],'-',
- address_buffer[4],address_buffer[5],
- address_buffer[6],address_buffer[7],
- address_buffer[8],address_buffer[9]);
- else
- output_buffer[0] = 0;
-}
-
-
-// get the host id portion of an ipx address
-int IpxAddress::get_hostid( MacAddress& mac)
-{
- if ( valid_flag)
- {
- char buffer[18];
- ACE_OS::sprintf( buffer,"%02x:%02x:%02x:%02x:%02x:%02x",
- address_buffer[4],
- address_buffer[5], address_buffer[6], address_buffer[7],
- address_buffer[8], address_buffer[9]);
- MacAddress temp( buffer);
- // mac = (SnmpSyntax&) temp;
- mac = temp;
- if ( mac.valid())
- return 1;
- else
- return 0;
- }
- else
- return 0;
-}
-
-
-//------[ return the type ]----------------------------------
-addr_type IpxAddress::get_type() const
-{
- return type_ipx;
-}
-
-void IpxAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-
-//========================================================================
-//======== IpxSockAddress Implementation =================================
-//========================================================================
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 IpxSockAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-//-----------[ construct an IpxSockAddress with another IpxSockAddress]----
-IpxSockAddress::IpxSockAddress( const IpxSockAddress &ipxaddr):IpxAddress(ipxaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXSOCKLEN;
- smival.value.string.ptr = address_buffer;
-
- // copy the socket value
- set_socket(ipxaddr.get_socket());
- format_output();
-}
-
-
-//---------------[ default construct a IpxSockAddress ]--------------
-IpxSockAddress::IpxSockAddress( const char *inaddr):IpxAddress()
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXSOCKLEN;
- smival.value.string.ptr = address_buffer;
-
- set_socket(0);
- format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXSOCKLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *) inaddr);
- format_output();
-}
-
-
-//---------------[ construct a IpxSockAddress from a GenAddress ]----------
-IpxSockAddress::IpxSockAddress( const GenAddress &genaddr):IpxAddress()
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXSOCKLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- unsigned short socketid = 0;
- // allow use of an ipx or ipxsock address
- if ( (genaddr.get_type() == type_ipx) )
- {
- valid_flag = genaddr.valid();
- if ( valid_flag)
- {
- // copy in the Ipx address data
- IpxAddress temp_ipx( (const char *) genaddr);
- *this = temp_ipx;
- }
- }
- else
- if ( (genaddr.get_type() == type_ipxsock) )
- {
- valid_flag = genaddr.valid();
- if ( valid_flag)
- {
- // copy in the Ipx address data
- IpxSockAddress temp_ipxsock( (const char *) genaddr);
- *this = temp_ipxsock;
- // socketid info since are making an IpxSockAddress
- socketid = temp_ipxsock.get_socket();
- }
- }
- set_socket(socketid);
- format_output();
-}
-
-
-//------------[ construct an IpxSockAddress from a IpxAddress ]--------------
-IpxSockAddress::IpxSockAddress( const IpxAddress &ipxaddr):IpxAddress(ipxaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = IPXSOCKLEN;
- smival.value.string.ptr = address_buffer;
-
- set_socket(0);
- format_output();
-}
-
-//-----[ destructor ]--------------------------------------------------
-IpxSockAddress::~IpxSockAddress()
-{
-}
-
-// copy an instance of this Value
-SnmpSyntax& IpxSockAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag=0; // will set to 1 if really valid
- if (val.valid()){
- switch (val.get_syntax()){
- case sNMP_SYNTAX_OCTETS:
- {
- // See if it is of the Ipx address family
- // This handles IpxSockAddress == IpxAddress
- IpxSockAddress temp_ipx(val.to_string());
- if (temp_ipx.valid()){
- *this = temp_ipx; // ipxsock = ipxsock
- }
- // See if it is an OctetStr of appropriate length
- else if (((IpxSockAddress &)val).smival.value.string.len == IPXSOCKLEN){
- ACE_OS::memcpy(address_buffer,
- ((IpxSockAddress &)val).smival.value.string.ptr,
- IPXSOCKLEN);
- valid_flag=1;
- }
- }
- break;
- }
- }
- format_output();
- return *this;
-}
-
-// assignment to another IpAddress object overloaded
-IpxSockAddress& IpxSockAddress::operator=( const IpxSockAddress &ipxaddr)
-{
- // protect against assignment from itself
- if ( this == &ipxaddr )
- return *this;
-
- (IpxAddress&)*this = ipxaddr; // use ancestor assignment for ipx addr
- set_socket(ipxaddr.get_socket()); // copy socket value
- format_output();
- return *this;
-}
-
-
-//----------[ create a new instance of this Value ]------------------------
-SnmpSyntax *IpxSockAddress::clone() const
-{
- return (SnmpSyntax *) new IpxSockAddress(*this);
-}
-
-//----[ IPXSock address char * cast ]--------------------------------------
-IpxSockAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-//----[ IPXSock address get char representation ]--------------------------
-const char * IpxSockAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-//----[ IPX address format output ]-------------------------------------
-void IpxSockAddress::format_output()
-{
- IpxAddress::format_output(); // allow ancestors to format their buffers
-
- if ( valid_flag)
- ACE_OS::sprintf((char *) output_buffer,"%s/%d",
- IpxAddress::to_string(), get_socket());
- else
- output_buffer[0] = 0;
-}
-
-//-----[ IP Address parse Address ]---------------------------------
-int IpxSockAddress::parse_address( const char *inaddr)
-{
- char buffer[MAXHOSTNAMELEN +1];
- unsigned short socketid=0;
-
- if (inaddr && (ACE_OS::strlen( inaddr)< MAXHOSTNAMELEN))
- ACE_OS::strcpy( buffer, inaddr);
- else
- {
- valid_flag = 0;
- return 0;
- }
- // look for port info @ the end of the string
- // port can be delineated by a ':' or a '/'
- // if neither are present then just treat it
- // like a normal IpAddress
- char *tmp;
- tmp = ACE_OS::strstr( buffer,"/");
-
- if (tmp != 0)
- {
- *tmp=0; // null terminator
- tmp++;
- socketid = ACE_OS::atoi( tmp);
- }
- set_socket(socketid);
- return IpxAddress::parse_address( buffer);
-}
-
-
-
-//-------------[ set the socket number ]----------------------------------
-void IpxSockAddress::set_socket( const unsigned short s)
-{
- unsigned short sock_nbo = htons(s);
- ACE_OS::memcpy(&address_buffer[IPXLEN], &sock_nbo, 2);
-}
-
-//--------------[ get the socket number ]---------------------------------
-unsigned short IpxSockAddress::get_socket() const
-{
- if (valid_flag)
- {
- unsigned short sock_nbo;
- ACE_OS::memcpy(&sock_nbo, &address_buffer[IPXLEN], 2);
- return ntohs(sock_nbo);
- }
- else
- return 0; // don't use uninitialized memory
-}
-
-//------[ return the type ]----------------------------------------------
-addr_type IpxSockAddress::get_type() const
-{
- return type_ipxsock;
-}
-
-
-//========================================================================
-//======== MACAddress Implementation =====================================
-//========================================================================
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 MacAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-//-----[ MAC Address copy constructor ]---------------------------------
-MacAddress::MacAddress(const MacAddress &macaddr)
- : Address (macaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = MACLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = macaddr.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, macaddr.address_buffer, MACLEN);
- format_output();
-}
-
-//---------[ constructor with a string argument ]-------------------------
-MacAddress::MacAddress( const char *inaddr):Address( )
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = MACLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag=0;
- format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = MACLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *) inaddr);
- format_output();
-}
-
-//-----[ construct a MacAddress from a GenAddress ]------------------------
-MacAddress::MacAddress( const GenAddress &genaddr)
-{
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = MACLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- // allow use of mac address
- if (genaddr.get_type() == type_mac)
- {
- valid_flag = genaddr.valid();
- if ( valid_flag)
- {
- // copy in the Mac address data
- MacAddress temp_mac( (const char *) genaddr);
- *this = temp_mac;
- }
- }
- format_output();
-}
-
-//-----[ destructor ]--------------------------------------------------
-MacAddress::~MacAddress()
-{
-}
-
-//---------[ MacAddress clone ]-------------------------------------------
-SnmpSyntax *MacAddress::clone() const
-{
- return (SnmpSyntax *) new MacAddress(*this);
-}
-
-//------[ assignment to another ipaddress object overloaded ]--------------
-MacAddress& MacAddress::operator=( const MacAddress &macaddress)
-{
- // protect against assignment from itself
- if ( this == &macaddress )
- return *this;
-
- valid_flag = macaddress.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, macaddress.address_buffer, MACLEN);
- format_output();
- return *this;
-}
-
-
-
-//-----[ MAC Address general = operator ]---------------------------------
-SnmpSyntax& MacAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag=0; // will set to 1 if really valid
- if (val.valid()){
- switch (val.get_syntax()){
- case sNMP_SYNTAX_OCTETS:
- if (((MacAddress &)val).smival.value.string.len == MACLEN){
- ACE_OS::memcpy(address_buffer,
- ((MacAddress &)val).smival.value.string.ptr, MACLEN);
- valid_flag=1;
- }
- break;
- }
- }
- format_output();
- return *this;
-}
-
-//-----[ MAC Address parse Address ]--------------------------------------
-// Convert a string to a six byte MAC address
-// On success sets validity 1 or 0
-//
-// MAC address format
-//
-// MAC ADDRESS
-// 01 02 03 04 05 06
-// XX:XX:XX:XX:XX:XX
-// Valid input format
-//
-// XXXXXXXXXXXX
-// Total length must be 17
-// Each char must take on value 0-F
-//
-//
-int MacAddress::parse_address( const char *inaddr)
-{
- char temp[MAXHOSTNAMELEN +1]; // don't destroy original
- char unsigned *tmp;
- size_t z;
-
-
- // save the orginal source
- if ( !inaddr || (ACE_OS::strlen( inaddr) > 30)) return 0;
- ACE_OS::strcpy( temp, inaddr);
- trim_white_space( temp);
-
- // bad total length check
- if ( ACE_OS::strlen(temp) != 17)
- return 0;
-
- // check for colons
- if ((temp[2] != ':')||(temp[5] != ':')||(temp[8]!=':')||(temp[11]!=':')
- ||(temp[14] !=':'))
- return 0;
-
- // strip off the colons
- tmp = ( unsigned char *) temp;
- int i = 0;
- while ( *tmp != 0)
- {
- if (*tmp != ':')
- {
- temp[i] = *tmp;
- i++;
- }
- tmp++;
- }
- temp[i] = 0;
-
- // convert to lower
- for(z=0;z<ACE_OS::strlen(temp);z++)
- temp[z] = tolower( temp[z]);
-
-
- // check out the MAC address
- tmp = ( unsigned char *) temp;
- while( *tmp != 0)
- if (((*tmp >= '0') && (*tmp <= '9'))|| // good 0-9
- ((*tmp >= 'a') && (*tmp <= 'f'))) // or a-f
- tmp++;
- else
- return 0;
-
- // convert to target string
- tmp = (unsigned char *) temp;
- while ( *tmp != 0)
- {
- if (( *tmp >= '0') && ( *tmp <= '9'))
- *tmp = *tmp - (char unsigned )'0';
- else
- *tmp = *tmp - (char unsigned) 'a' + (char unsigned) 10;
- tmp++;
- }
-
- address_buffer[0] = (temp[0]*16) + temp[1];
- address_buffer[1] = (temp[2]*16) + temp[3];
- address_buffer[2] = (temp[4]*16) + temp[5];
- address_buffer[3] = (temp[6]*16) + temp[7];
- address_buffer[4] = (temp[8]*16) + temp[9];
- address_buffer[5] = (temp[10]*16) + temp[11];
-
- return 1;
-}
-
-//----[ MAC address char * cast ]--------------------------------------
-MacAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-//----[ MAC address get char representation ]--------------------------
-const char * MacAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-//----[ MAC address format output ]---------------------------------
-void MacAddress::format_output()
-{
- if ( valid_flag)
- sprintf(output_buffer,"%02x:%02x:%02x:%02x:%02x:%02x",address_buffer[0],
- address_buffer[1],address_buffer[2],address_buffer[3],
- address_buffer[4],address_buffer[5]);
- else
- output_buffer[0] = 0;
-}
-
-//------[ return the type ]----------------------------------
-addr_type MacAddress::get_type() const
-{
- return type_mac;
-}
-
-
-unsigned int MacAddress::hashFunction() const
-{
- return ((((address_buffer[0] << 8) + address_buffer[1]) * HASH0LEN)
- + (((address_buffer[2] << 8) + address_buffer[3]) * HASH1LEN)
- + (((address_buffer[4] << 8) + address_buffer[5]) * HASH2LEN));
-}
-
-void MacAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-//========================================================================
-//========== Generic Address Implementation ==============================
-//========================================================================
-
-//-----------[ get the syntax]----------------------------------------------
-SmiUINT32 GenAddress::get_syntax()
-{
- if (address != 0)
- return address->get_syntax();
-
- return sNMP_SYNTAX_NULL;
-}
-
-void GenAddress::init_smi()
-{
- smival.syntax = sNMP_SYNTAX_NULL; // to be overridden
- smival.value.string.len = 0; // to be overridden
- smival.value.string.ptr = address_buffer; // constant
-}
-
-//-----------[ constructor with a string argument ]----------------------
-GenAddress::GenAddress( const char *addr): address(0)
-{
- valid_flag = 0;
- // initialize SMI info
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- init_smi();
-
- if (addr && ACE_OS::strlen(addr) == 0) {
- format_output();
- return;
- }
-
- parse_address(addr);
-
- // Copy real address smival info into GenAddr smival
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- if ( valid_flag ) {
- smival.syntax = ((GenAddress *)address)->smival.syntax;
- smival.value.string.len =
- ((GenAddress *)address)->smival.value.string.len;
- ACE_OS::memcpy(smival.value.string.ptr,
- ((GenAddress *)address)->smival.value.string.ptr,
- (size_t)smival.value.string.len);
- }
-}
-
-//-----------[ constructor with an Address argument ]--------------------
-GenAddress::GenAddress( const Address &addr): address(0)
-{
- valid_flag = 0;
-
- // initialize SMI info
- // BOK: this is generally not used for GenAddress,
- // but we need this to be a replica of the real address'
- // smival info so that operator=SnmpSyntax will work.
- init_smi();
- // make sure that the object is valid
- if (!addr.valid()) {
- format_output();
- return;
- }
-
- address = (Address*)addr.clone();
- if (address)
- valid_flag = address->valid();
-
- // Copy real address smival info into GenAddr smival
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- if ( valid_flag ) {
- smival.syntax = address->get_syntax();
- smival.value.string.len =
- ((GenAddress *)address)->smival.value.string.len;
- ACE_OS::memcpy(smival.value.string.ptr,
- ((GenAddress *)address)->smival.value.string.ptr,
- (size_t)smival.value.string.len);
- }
-
- format_output();
-}
-
-//-----------------[ constructor with another GenAddress object ]-------------
-GenAddress::GenAddress( const GenAddress &addr)
- : Address (addr),
- address(0)
-{
- valid_flag = 0;
-
- // initialize SMI info
- // BOK: this is generally not used for GenAddress,
- // but we need this to be a replica of the real address'
- // smival info so that operator=SnmpSyntax will work.
- init_smi();
-
- // make sure that the object is valid
- if (!addr.valid_flag) {
- format_output();
- return;
- }
-
- address = (Address *)addr.address->clone();
- if (address)
- valid_flag = address->valid();
-
- // Copy real address smival info into GenAddr smival
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- if ( valid_flag ) {
- smival.syntax = ((GenAddress *)address)->smival.syntax;
- smival.value.string.len =
- ((GenAddress *)address)->smival.value.string.len;
- ACE_OS::memcpy(smival.value.string.ptr,
- ((GenAddress *)address)->smival.value.string.ptr,
- (size_t)smival.value.string.len);
- }
-
- format_output();
-}
-
-//----------[ destructor ] ------------------------------------------------
-GenAddress::~GenAddress()
-{
- if ( address != 0)
- delete address;
-}
-
-//----------[ create a new instance of this Value ]------------------------
-SnmpSyntax *GenAddress::clone() const
-{
- return (SnmpSyntax *) new GenAddress(*this);
-}
-
-//------[ assignment GenAddress = GenAddress ]-----------------------------
-GenAddress& GenAddress::operator=( const GenAddress &addr)
-{
- // protect against assignment from itself
- if ( this == &addr )
- return *this;
-
- valid_flag = 0;
- if (address) {
- delete address;
- address = 0;
- }
-
- if (addr.address)
- address = (Address *)(addr.address)->clone();
-
- if (address)
- valid_flag = address->valid();
-
- // Copy real address smival info into GenAddr smival
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- if ( valid_flag ) {
- smival.syntax = ((GenAddress *)address)->smival.syntax;
- smival.value.string.len =
- ((GenAddress *)address)->smival.value.string.len;
- ACE_OS::memcpy(smival.value.string.ptr,
- ((GenAddress *)address)->smival.value.string.ptr,
- (size_t)smival.value.string.len);
- }
-
- format_output();
- return *this;
-}
-
-
-//------[ assignment GenAddress = any SnmpSyntax ]-----------------------
-SnmpSyntax& GenAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will get set to 1 if really valid
- if ( address != 0) {
- delete address;
- address = 0;
- }
-
- if (val.valid()) {
- switch ( val.get_syntax() ) {
- //-----[ ip address case ]-------------
- // BOK: this case shouldn't be needed since there is an explicit
- // GenAddr=Address assignment that will override this assignment.
- // Left here for posterity.
- case sNMP_SYNTAX_IPADDR:
- {
- address = (Address *)val.clone();
- if (address)
- valid_flag = address->valid();
- }
- break;
-
- //-----[ udp address case ]------------
- //-----[ ipx address case ]------------
- //-----[ mac address case ]------------
- // BOK: This is here only to support GenAddr = primitive OctetStr.
- // The explicit GenAddr=Address assignment will handle the cases
- // GenAddr = [UdpAdd|IpxAddr|IpxSock|MacAddr|DecNetAddr|NetbiosAddr|AppleTlk].
- // Note, using the heuristic of octet str len to determine type of
- // address to create is not accurate when address lengths are equal
- // (e.g., UDPIPV4LEN == MACLEN). It gets worse if we add AppleTalk or
- // OSI which use variable length addresses! assume AppleTalk as used in IOS Mibs
- // is defined in CISCO-TC.my as fixed length of 3 octets
-
- case sNMP_SYNTAX_OCTETS:
- {
- unsigned long val_len;
- val_len = ((GenAddress &)val).smival.value.string.len;
-
- if (val_len == UDPIPV4LEN) {
- ACE_NEW_RETURN(address, UdpAddress, *this);
- }
- else if (val_len ==IPV4LEN) {
- ACE_NEW_RETURN(address, IpAddress, *this);
- }
- else if (val_len == IPXLEN) {
- ACE_NEW_RETURN(address, IpxAddress, *this);
- }
- else if (val_len == IPXSOCKLEN) {
- ACE_NEW_RETURN(address, IpxSockAddress, *this);
- }
- else if (val_len == MACLEN) {
- ACE_NEW_RETURN(address, MacAddress, *this);
- }
- else if (val_len == APPLETKLEN) {
- ACE_NEW_RETURN(address, AppleTalkAddress, *this);
- }
- else if (val_len == DECNETLEN) {
- ACE_NEW_RETURN(address, DecNetAddress, *this);
- }
- else if (val_len == NETBIOSLEN) {
- ACE_NEW_RETURN(address, DecNetAddress, *this);
- }
-
- if (address) {
- *address = val;
- valid_flag = address->valid();
- }
- }
- break;
- } // end switch
- }
-
- // Copy real address smival info into GenAddr smival
- // BOK: smival is generally not used for GenAddress, but
- // we need this to be a replica of the real address'
- // smival info so that <class>::operator=SnmpSyntax
- // will work.
- if ( valid_flag ) {
- smival.syntax = ((GenAddress *)address)->smival.syntax;
- smival.value.string.len =
- ((GenAddress *)address)->smival.value.string.len;
- ACE_OS::memcpy(smival.value.string.ptr,
- ((GenAddress *)address)->smival.value.string.ptr,
- (size_t)smival.value.string.len);
- }
-
- format_output();
- return *this;
-}
-
-
-// redefined parse address for macs
-// TODO: Add netbios, appletalk, and decnet addresses here
-int GenAddress::parse_address( const char *addr)
-{
- if ( address != 0)
- delete address;
-
- // try to create each of the addresses until the correct one
- // is found
-
-//BOK: Need to try IPX Sock and IPX before UDP since on Win32,
-// gethostbyname() seems to think the ipx network number
-// portion is a valid ipaddress string... stupid WinSOCK!
-
- // ipxsock address
- ACE_NEW_RETURN(address, IpxSockAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag && ((IpxSockAddress*)address)->get_socket()) {
- format_output();
- return 1; // ok its an ipxsock address
- }
- // otherwise delete it and try another
- delete address;
-
- // ipx address
- ACE_NEW_RETURN(address, IpxAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag) {
- format_output();
- return 1; // ok its an ipx address
- }
- // otherwise delete it and try another
- delete address;
-
-//TM: Must try the derived classes first...one pitfall of the
-//following solution is if someone creates with a port/socket of 0 the
-//class will get demoted to ip/ipx. The only proper way to do this is
-//to parse the strings ourselves.
-
- // udp address
- ACE_NEW_RETURN(address, UdpAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag && ((UdpAddress*)address)->get_port()) {
- format_output();
- return 1; // ok its a udp address
- }
-
- // otherwise delete it and try another
- delete address;
-
- // ip address
- ACE_NEW_RETURN(address, IpAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag)
- {
- format_output();
- return 1; // ok its an ip address
- }
- // otherwise delete it and try another
- delete address;
-
- // mac address
- ACE_NEW_RETURN(address, MacAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag) {
- format_output();
- return 1; // ok, its a mac
- }
-
- // guess by length of argument the type of address
- switch (ACE_OS::strlen(addr)) {
- case NETBIOSLEN:
- ACE_NEW_RETURN(address, NetbiosAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag) {
- format_output();
- return 1; // ok, its a mac
- }
- break;
-
- case APPLETKLEN:
- ACE_NEW_RETURN(address, AppleTalkAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag) {
- format_output();
- return 1; // ok, its a mac
- }
- break;
-
- case DECNETLEN:
- ACE_NEW_RETURN(address, DecNetAddress( addr), -1);
- valid_flag = address->valid();
- if ( valid_flag) {
- format_output();
- return 1; // ok, its a mac
- }
- break;
-
- }
- // otherwise its invalid
- delete address;
- address = 0;
- format_output();
- return 0;
-}
-
-GenAddress::operator const char *() const
-{
- if ( address != 0)
- return (const char *)*address; // pass thru
- else
- return (char *)output_buffer;
-}
-
-// to_string form of the contained address
-const char * GenAddress::to_string()
-{
- if ( address != 0)
- return address->to_string(); // pass thru
- else
- return (char *)output_buffer;
-}
-
-// format output
-void GenAddress::format_output()
-{
- output_buffer[0] = '\0';
-}
-
-//------[ return the type ]----------------------------------
-addr_type GenAddress::get_type() const
-{
- if (!valid())
- return type_invalid;
- else
- return address->get_type();
-}
-
-// call the particular type class here
-void GenAddress::to_octet(OctetStr& octet) const
-{
- if (!valid())
- return;
-
- address->to_octet(octet);
-}
-
-//------------------------------------------------------------------------
-//---------[ DecNet Address Class ]---------------------------------------
-//------------------------------------------------------------------------
-
-DecNetAddress::DecNetAddress( const char *inaddr): Address()
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = DECNETLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag=0;
- DecNetAddress::format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = DECNETLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *) inaddr);
- DecNetAddress::format_output();
-}
-
-DecNetAddress::DecNetAddress( const DecNetAddress& addr)
- : Address (addr)
-{
-}
-
-DecNetAddress::DecNetAddress( const GenAddress& genaddr)
-{
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = DECNETLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- // allow use of an ipx or ipxsock address
- if ( (genaddr.get_type() == type_decnet) ) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the Ipx address data
- DecNetAddress temp_ipx( (const char *) genaddr);
- *this = temp_ipx;
- }
- }
- DecNetAddress::format_output();
-}
-
-DecNetAddress::~DecNetAddress()
-{
-}
-
-const char *DecNetAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-DecNetAddress& DecNetAddress::operator=( const DecNetAddress &decaddr)
-{
- // protect against assignment from itself
- if ( this == &decaddr )
- return *this;
- valid_flag = decaddr.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, decaddr.address_buffer, DECNETLEN);
- format_output();
- return *this;
-}
-
-void DecNetAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-DecNetAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-SmiUINT32 DecNetAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-SnmpSyntax& DecNetAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will get set 1 if really valid
-
- if (val.valid()) {
- if (((DecNetAddress &)val).smival.value.string.len ==DECNETLEN) {
- ACE_OS::memcpy(address_buffer,
- ((DecNetAddress &)val).smival.value.string.ptr, DECNETLEN);
- valid_flag = 1;
- }
- }
- DecNetAddress::format_output();
- return *this;
-}
-
-SnmpSyntax *DecNetAddress::clone() const
-{
- return (SnmpSyntax *) new DecNetAddress(*this);
-}
-
-addr_type DecNetAddress::get_type() const
-{
- return type_decnet;
-}
-
-void DecNetAddress::format_output()
-{
- // if valid format else null it
- if ( valid_flag)
- ACE_OS::sprintf( (char *) output_buffer,"%d.%d",address_buffer[0],
- address_buffer[1]);
- else
- output_buffer[0] = 0;
-}
-
-int DecNetAddress::parse_address( const char *address)
-{
- if (ACE_OS::strlen(address) > DECNETLEN)
- return 0; // invalid
-
- ACE_OS::memset(address_buffer, 0, DECNETLEN);
- ACE_OS::memcpy(address_buffer, address, DECNETLEN);
-
- return 1; // valid
-}
-
-
-//------------------------------------------------------------------------
-//---------[ AppleTalk Address Class ]------------------------------------
-//------------------------------------------------------------------------
-
-AppleTalkAddress::AppleTalkAddress( const char *inaddr): Address()
-{
- if (ACE_OS::strlen(inaddr) == 0) {
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = APPLETKLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag=0;
- AppleTalkAddress::format_output();
- return;
- }
-
- // always initialize SMI info
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = APPLETKLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = parse_address( (char *) inaddr);
- AppleTalkAddress::format_output();
-}
-AppleTalkAddress::AppleTalkAddress( const AppleTalkAddress& addr)
- : Address (addr)
-{
-}
-
-AppleTalkAddress::AppleTalkAddress( const GenAddress& genaddr)
-{
- smival.syntax = sNMP_SYNTAX_OCTETS;
- smival.value.string.len = APPLETKLEN;
- smival.value.string.ptr = address_buffer;
-
- valid_flag = 0;
- // allow use of an ipx or ipxsock address
- if ( (genaddr.get_type() == type_atk) ) {
- valid_flag = genaddr.valid();
- if ( valid_flag) {
- // copy in the Ipx address data
- AppleTalkAddress temp_ipx( (const char *) genaddr);
- *this = temp_ipx;
- }
- }
- AppleTalkAddress::format_output();
-}
-
-AppleTalkAddress::~AppleTalkAddress()
-{
-}
-
-const char *AppleTalkAddress::to_string()
-{
- return (char *)output_buffer;
-}
-
-AppleTalkAddress& AppleTalkAddress::operator=( const AppleTalkAddress &ataddr)
-{
- // protect against assignment from itself
- if ( this == &ataddr )
- return *this;
- valid_flag = ataddr.valid_flag;
- if (valid_flag)
- ACE_OS::memcpy(address_buffer, ataddr.address_buffer, APPLETKLEN);
- format_output();
- return *this;
-}
-
-void AppleTalkAddress::to_octet(OctetStr& octet) const
-{
- octet.set_data( smival.value.string.ptr, smival.value.string.len);
-}
-
-AppleTalkAddress::operator const char *() const
-{
- return (char *)output_buffer;
-}
-
-SmiUINT32 AppleTalkAddress::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-SnmpSyntax& AppleTalkAddress::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- valid_flag = 0; // will get set 1 if really valid
-
- if (val.valid()) {
- if (((AppleTalkAddress &)val).smival.value.string.len ==APPLETKLEN) {
- ACE_OS::memcpy(address_buffer,
- ((AppleTalkAddress &)val).smival.value.string.ptr,APPLETKLEN);
- valid_flag = 1;
- }
- }
- AppleTalkAddress::format_output();
- return *this;
-}
-
-SnmpSyntax *AppleTalkAddress::clone() const
-{
- return (SnmpSyntax *) new AppleTalkAddress(*this);
-}
-
-addr_type AppleTalkAddress::get_type() const
-{
- return type_atk;
-}
-
-void AppleTalkAddress::format_output()
-{
- // if valid format else null it
- if ( valid_flag)
- ACE_OS::sprintf( (char *) output_buffer,"%d.%d.%d", address_buffer[0],
- address_buffer[1], address_buffer[3]);
- else
- output_buffer[0] = 0;
-}
-
-int AppleTalkAddress::parse_address( const char *address)
-{
- if (ACE_OS::strlen(address) > APPLETKLEN)
- return 0; // invalid
-
- ACE_OS::memset(address_buffer, 0, APPLETKLEN);
- ACE_OS::memcpy(address_buffer, address, APPLETKLEN);
-
- return 1; // valid
-}
-
-char AppleTalkAddress::get_host_address() const
-{
- return address_buffer[2];
-}
-
-void AppleTalkAddress::set_host_address(const char host)
-{
- address_buffer[2] = host;
-}
-
-short AppleTalkAddress::get_net_address() const
-{
- short net;
- ACE_OS::memcpy(&net, address_buffer, APPLETKLEN - 1);
- return net;
-}
-
-void AppleTalkAddress::set_net_address(const short atknet)
-{
- ACE_OS::memcpy(address_buffer, &atknet, APPLETKLEN -1);
-}
diff --git a/ASNMP/asnmp/address.h b/ASNMP/asnmp/address.h
deleted file mode 100644
index f8131c19485..00000000000
--- a/ASNMP/asnmp/address.h
+++ /dev/null
@@ -1,845 +0,0 @@
-
-
-#ifndef ADDRESS_
-#define ADDRESS_
-//=============================================================================
-/**
- * @file address.h
- *
- * $Id$
- *
- * Address class definition. Encapsulates various network
- * addresses into easy to use, safe and portable classes.
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----[ includes ]-----------------------------------------------------
-// ACE OS Adaption layer
-#include "ace/os_include/netinet/os_in.h"
-#include "ace/os_include/os_netdb.h"
-#include "ace/Log_Msg.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/smival.h"
-#include "asnmp/octet.h"
-
-//----[ enumerated types ] --------------------------------
-enum address_lengths {
- IPV4LEN=4,
- UDPIPV4LEN=6,
- IPV6LEN=16,
- UDPIPV6LEN=18,
- IPXLEN=10,
- IPXSOCKLEN=12,
- NETBIOSLEN=16,
- APPLETKLEN=3,
- DECNETLEN=2,
- MACLEN=6,
- HASH0LEN=19,
- HASH1LEN=13,
- HASH2LEN=7,
- MAX_ADDR_SZ=20,
- MAX_DISPLAY_SZ=MAXHOSTNAMELEN+1
-};
-
-enum addr_type {
- type_ip,
- type_ipx,
- type_udp,
- type_ipxsock,
- type_mac,
- type_nb,
- type_atk,
- type_decnet,
- type_e164,
- type_sip, // IPv6
- type_invalid
-};
-
-// TODO: get rest of nb service types added here
-enum nb_service {
- nb_workstation = 0x0, nb_server = 0x20
-};
-
-//---[ forward declarations ]-----------------------------------------
-class GenAddress;
-class UdpAddress;
-class IpxSockAddress;
-class NetbiosAddress;
-class SIPAddress; // aka ipv6
-
-// TODO:
-// class AtmE164Address;
-
-
-//--------------------------------------------------------------------
-//----[ Address class ]-----------------------------------------------
-//--------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the abstract base class
- * Address. An Address is a unique network endpoint.
- */
-class ASNMP_Export Address: public SnmpSyntax
-{
-
-public:
- /// allow destruction of derived classes
- virtual ~Address();
-
- /// overloaded equivlence operator, are two addresses equal?
- friend ASNMP_Export bool operator==( const Address &lhs,const Address &rhs);
-
- /// overloaded not equivlence operator, are two addresses not equal?
- friend ASNMP_Export bool operator!=( const Address &lhs,const Address &rhs);
-
- /// overloaded > operator, is a1 > a2
- friend ASNMP_Export bool operator>( const Address &lhs,const Address &rhs);
-
- /// overloaded >= operator, is a1 >= a2
- friend ASNMP_Export bool operator>=( const Address &lhs,const Address &rhs);
-
- /// overloaded < operator, is a1 < a2
- friend ASNMP_Export bool operator<( const Address &lhs,const Address &rhs);
-
- /// overloaded <= operator, is a1 <= a2
- friend ASNMP_Export bool operator<=( const Address &lhs,const Address &rhs);
-
- /// equivlence operator overloaded, are an address and a string equal?
- friend ASNMP_Export bool operator==( const Address &lhs,const char *rhs);
-
- /// overloaded not equivlence operator, are an address and string not equal?
- friend ASNMP_Export bool operator!=( const Address &lhs,const char *rhs);
-
- /// overloaded < , is an address greater than a string?
- friend ASNMP_Export bool operator>( const Address &lhs,const char *rhs);
-
- /// overloaded >=, is an address greater than or equal to a string?
- friend ASNMP_Export bool operator>=( const Address &lhs,const char *rhs);
-
- /// overloaded < , is an address less than a string?
- friend ASNMP_Export bool operator<( const Address &lhs,const char *rhs);
-
- /// overloaded <=, is an address less than or equal to a string?
- friend ASNMP_Export bool operator<=( const Address &lhs,const char *rhs);
-
- /// overloaded const char * cast
- virtual operator const char *() const = 0;
-
- /// verify the is the address object constructed ok
- virtual int valid() const;
-
- /// return a suitable buffer to contain the address
- virtual void to_octet(OctetStr& octet) const = 0;
-
- /// (pure virtual) syntax type
- virtual SmiUINT32 get_syntax() = 0;
-
- /// for non const [], allows reading and writing
- unsigned char& operator[]( const int position);
-
- /// get a printable ASCII value
- virtual const char *to_string() = 0;
-
- /// create a new instance of this Value
- virtual SnmpSyntax *clone() const = 0;
-
- /// return the type of address
- virtual addr_type get_type() const = 0;
-
- /// overloaded assignment operator
- virtual SnmpSyntax& operator=( SnmpSyntax &val) = 0;
-
- /// return a hash key
- virtual unsigned int hashFunction() const { return 0;};
-
-
-protected:
- /// state of constructed object (1/0)
- /// addr internal representation
- int valid_flag;
- unsigned char address_buffer[MAX_ADDR_SZ];
-
- /// parse the address string
- /// redefined for each specific address subclass
- virtual int parse_address( const char * inaddr) =0;
-
- /// format the output
- /// redefined for each specific address subclass
- virtual void format_output() =0;
-
- /// a reused trimm white space method
- void trim_white_space( char * ptr);
-};
-
-
-//-----------------------------------------------------------------------
-//---------[ IPv4 Address Class ]----------------------------------------
-//-----------------------------------------------------------------------
-/**
- * @class IpAddress
- *
- * @brief Defines the member functions for the concrete class IpAddress
- * An IP Version 4 Address is 4 bytes long and consists of a
- * Network, Sub Network, and host component.
- */
-class ASNMP_Export IpAddress : public Address
-{
-public:
- /// default construct an IP address with a string
- IpAddress( const char *inaddr = "");
-
- /// construct an IP address with another IP address
- IpAddress( const IpAddress &ipaddr);
-
- /// construct an IP address with a GenAddress
- IpAddress( const GenAddress &genaddr);
-
- /// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
- ~IpAddress();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// assignment to another IpAddress object overloaded
- IpAddress& operator=( const IpAddress &ipaddress);
-
- // TODO: add ability to set addr given long
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// return the DNS Fully Qualified Domain Name (host.domain)
- /// on failure returns dotted_quad string
- const char *resolve_hostname(int& was_found);
-
- /// return string representation of object (dotted quad returned)
- virtual const char *to_string() ;
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// logically AND two IPaddresses and
- /// return the new one
- void mask( const IpAddress& ipaddr);
-
- /// return the type
- virtual addr_type get_type() const;
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// is this the loopback address? 127.0.0.1/loopback/1.0.0.127.in-addr.arpa
- int is_loopback() const;
-
- /// determine if this is a multicast address
- int is_multicast() const;
-
- /// determine if this a broadcast address
- int is_broadcast() const;
-
- /// per RFC 1597, private addresses are:: 10, 172.16, and 192.168.0
- int is_private() const;
-
- /// convert address into octet string format in network byte order
- virtual void to_octet(OctetStr& octet) const;
-
-protected:
- char output_buffer[MAX_DISPLAY_SZ]; // output buffer
-
- /// friendly name storage
- char iv_friendly_name_[MAX_DISPLAY_SZ];
-
- /// did resolver call work? some addrs won't resolve
- int iv_friendly_name_status_;
-
- /// redefined parse address
- /// specific to IP addresses
- virtual int parse_address( const char *inaddr);
-
- /// redefined format output
- /// specific to IP addresses
- virtual void format_output();
-
- /// parse a dotted string
- int parse_dotted_ipstring( const char *inaddr);
-
- /// using the currently defined address, do a gethostbyname()
- /// and try to fill up the name
- int addr_to_friendly();
-
- /// thread safe routine to lookup ip address given hostname
- /// return <> 0 on error
- static int resolve_to_address(const char *hostname, in_addr& quad_addr);
-
- /// thread safe routine to lookup name given ip address
- /// return <> 0 on error
- static int resolve_to_hostname(const in_addr& quad_addr, char *hostname);
-
-};
-
-//------------------------------------------------------------------------
-//--------------[ DNS Iterator Class ]------------------------------------
-//------------------------------------------------------------------------
-
-/**
- * @class Address_Iter
- *
- * @brief Defines routines to obtain information on a hostname/FQDN
- * such as multiple addresses
- */
-class ASNMP_Export Address_Iter
-{
-public:
- Address_Iter(const char *hostname); // fully qualified domain name, hostname
-
- /// did hostname resolve via DNS?
- int valid() const;
-
- /// how many addresses associated with this hostname
- int how_many_addresses();
-
- /// return next address
- int next(IpAddress& addr);
-
-private:
- Address_Iter(const Address_Iter&);
- int valid_; // ctor status
- int count_; // number of addresses
- char **entry_; // ptr to current address
- struct hostent lookupResult_;
- ACE_HOSTENT_DATA buffer_;
- int query_dns(const char *hostname);
-};
-
-//------------------------------------------------------------------------
-//---------[ UDP/IPv4 Address Class ]-------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the concrete class UdpAddress
- * A Udp Address consists of an IP Version 4 Address (IpAddress)
- * and a 2 byte unsigned port number. (see /etc/services file)
- * User Datagram Protocol (UDP) is a best effort transport
- */
-class ASNMP_Export UdpAddress : public IpAddress
-{
-public:
- /// default constructor with a dotted string in the form of addr:port
- UdpAddress( const char *inaddr = "");
-
- /// construct an Udp address with another Udp address
- UdpAddress( const UdpAddress &udpaddr);
-
- /// construct a Udp address with a GenAddress
- UdpAddress( const GenAddress &genaddr);
-
- /// construct a Udp address with an IpAddress
- /// default port # to zero
- UdpAddress( const IpAddress &ipaddr);
-
- /// destructor
- ~UdpAddress();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// assignment to another IpAddress object overloaded
- UdpAddress& operator=( const UdpAddress &udpaddr);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// output in the form of address:port
- virtual const char *to_string() ;
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// set the port number
- void set_port( const unsigned short p);
-
- /// get the port number
- unsigned short get_port() const;
-
- /// return the type
- virtual addr_type get_type() const;
-
-protected:
- /// output buffer
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// redefined parse address
- /// specific to IP addresses
- virtual int parse_address( const char *inaddr);
-
- /// redefined format output
- /// specific to IP addresses
- virtual void format_output();
-};
-
-
-//-------------------------------------------------------------------------
-//---------[ 802.3 MAC Address Class ]-------------------------------------
-//-------------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the concrete class MacAddress.
- * A Media Access Control Address consists of 48 bits as defined
- * in IEEE 802.3 specifications.
- */
-class ASNMP_Export MacAddress : public Address
-{
-public:
- /// constructor with a string argument
- MacAddress( const char *inaddr = "");
-
- /// constructor with another MAC object
- MacAddress( const MacAddress &macaddr);
-
- /// construct a MacAddress with a GenAddress
- MacAddress( const GenAddress &genaddr);
-
- /// destructor
- ~MacAddress();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// assignment to another IpAddress object overloaded
- MacAddress& operator=( const MacAddress &macaddress);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// create a string to internal class storage representing object
- virtual const char *to_string();
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// return the type
- virtual addr_type get_type() const;
-
- /// return a hash key
- unsigned int hashFunction() const;
-
- /// return byte array of the mac address
- virtual void to_octet(OctetStr& octet) const;
-
-protected:
- /// output buffer containing string representation of object
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// redefined parse address for macs
- virtual int parse_address( const char *inaddr);
-
- /// redefined format output for MACs
- virtual void format_output();
-};
-
-//------------------------------------------------------------------------
-//---------[ Netbios Address Class ]--------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the concrete class NetbiosAddress.
- * The IBM/Microsoft address for NETBIOS, NETBEUI protocol transport.
- */
-class ASNMP_Export NetbiosAddress : public Address
-{
-public:
-
- /// default constructor with string arg
- NetbiosAddress( const char *inaddr = "");
-
- /// set name and service type
- NetbiosAddress( const char *inaddr, nb_service svc);
-
- /// copy constructor
- NetbiosAddress( const NetbiosAddress& nbaddr);
-
- /// construct with a GenAddress
- NetbiosAddress( const GenAddress& genaddr);
-
- ~NetbiosAddress();
-
- virtual const char *to_string();
-
- NetbiosAddress& operator=( const NetbiosAddress &nbaddr);
-
- /// retrieve the network service type
- nb_service get_service_type() const;
-
- /// set the service type (workstation, server, etc)
- void set_service_type(nb_service nbservice);
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// output byte buffer containing netbios name
- virtual void to_octet(OctetStr& octet) const;
-
-protected:
- void InitNBAddr(const char *inaddr);
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// output buffer to hold string representation
- virtual void format_output();
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
-};
-
-//------------------------------------------------------------------------
-//---------[ DecNet Address Class ]---------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the concrete class DecNetAddress.
- * DecNet Phase ? address consists of two octets (CISCO-TC.my)
- */
-class ASNMP_Export DecNetAddress : public Address
-{
- public:
- /// default constructor with string arg
- DecNetAddress( const char *inaddr = "");
-
- /// copy constructor
- DecNetAddress( const DecNetAddress& decaddr);
-
- /// construct with a GenAddress
- DecNetAddress( const GenAddress& genaddr);
-
- ~DecNetAddress();
-
- virtual const char *to_string();
-
- DecNetAddress& operator=( const DecNetAddress &decaddr);
-
- /// convert address into octet string format 2 bytes of decnet address
- virtual void to_octet(OctetStr& octet) const;
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- protected:
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
- virtual void format_output();
- char output_buffer[MAX_DISPLAY_SZ];
-};
-
-//------------------------------------------------------------------------
-//---------[ AppleTalk Address Class ]------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class
- *
- * @brief Defines the member functions for the concrete class DecNetAddress.
- * DecNet Phase ? address consists of two octets (CISCO-TC.my)
- */
-class ASNMP_Export AppleTalkAddress : public Address
-{
- public:
- /// default constructor with string arg
- AppleTalkAddress( const char *inaddr = "");
-
- /// copy constructor
- AppleTalkAddress( const AppleTalkAddress& atkaddr);
-
- /// construct with a GenAddress
- AppleTalkAddress( const GenAddress& genaddr);
-
- ~AppleTalkAddress();
-
- virtual const char *to_string();
-
- AppleTalkAddress& operator=( const AppleTalkAddress &atkaddr);
-
- /// convert address into octet string format 3 bytes of atk address
- virtual void to_octet(OctetStr& octet) const;
-
- /// get the host part of the address
- char get_host_address() const;
-
- /// set the host part of the address
- void set_host_address(const char);
-
- /// get the 2 byte atk network address
- short get_net_address() const;
-
- /// set the host 2 byte atk network address
- void set_net_address(const short atknet);
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- private:
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
- virtual void format_output();
- char output_buffer[MAX_DISPLAY_SZ];
-};
-
-//------------------------------------------------------------------------
-//---------[ IPX Address Class ]------------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class IpxAddress
- *
- * @brief Defines the member functions for the concrete class IpxAddress.
- * Novell's IPX (version ?) network protocol endpoint
- */
-class ASNMP_Export IpxAddress : public Address
-{
-public:
- /// default constructor with a string arg
- IpxAddress( const char *inaddr = "");
-
- /// constructor with another ipx object
- IpxAddress( const IpxAddress &ipxaddr);
-
- /// construct with a GenAddress
- IpxAddress( const GenAddress &genaddr);
-
- /// destructor
- ~IpxAddress();
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// assignment to another IpxAddress object overloaded
- IpxAddress& operator=( const IpxAddress &ipxaddress);
-
- /// get the host id portion of an ipx address
- int get_hostid( MacAddress& mac);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// create string represtation of object value
- virtual const char *to_string();
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// return the type
- virtual addr_type get_type() const;
-
- /// return byte sequence containing ipx address
- virtual void to_octet(OctetStr& octet) const;
-
-protected:
- /// ipx format separator {:,/}
- char separator;
-
- /// output buffer to hold string representation
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// redefined parse address for ipx strings
- virtual int parse_address( const char *inaddr);
-
- /// redefined format output for ipx strings
- /// uses same separator as when constructed
- virtual void format_output();
-};
-
-
-
-//------------------------------------------------------------------------
-//---------[ IpxSock Address Class ]--------------------------------------
-//------------------------------------------------------------------------
-/**
- * @class IpxSockAddress
- *
- * @brief Defines the member functions for the concrete class IpxAddress.
- * Novell's IPX (version ?) network protocol endpoint
- */
-class ASNMP_Export IpxSockAddress : public IpxAddress
-{
-public:
- /// constructor with a dotted string
- IpxSockAddress( const char *inaddr = "");
-
- /// construct an Udp address with another Udp address
- IpxSockAddress( const IpxSockAddress &ipxaddr);
-
- ///constructor with a GenAddress
- IpxSockAddress( const GenAddress &genaddr);
-
- ///constructor with a IpxAddress
- /// default socket # is 0
- IpxSockAddress( const IpxAddress &ipxaddr);
-
- /// destructor
- ~IpxSockAddress();
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// assignment to another IpxAddress object overloaded
- IpxSockAddress& operator=( const IpxSockAddress &ipxaddr);
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// set the socket number
- void set_socket( const unsigned short s);
-
- /// get the socket number
- unsigned short get_socket() const;
-
- /// create string representation of object value
- virtual const char *to_string();
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// return the type
- virtual addr_type get_type() const;
-
-protected:
- /// output buffer to hold string representation of object
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// redefined parse address for ipx strings
- virtual int parse_address( const char *inaddr);
-
- /// redefined format output
- /// specific to IP addresses
- virtual void format_output();
-};
-
-//-------------------------------------------------------------------------
-//--------[ Generic Address ]----------------------------------------------
-//-------------------------------------------------------------------------
-/**
- * @class GenAddress
- *
- * @brief Defines the member functions for the concrete class GenAddress.
- * This class attempts to determine an address type given a char string.
- */
-class ASNMP_Export GenAddress : public Address
-{
-public:
- /// constructor with a string argument
- GenAddress( const char *addr = "");
-
- /// constructor with an Address
- GenAddress( const Address &addr);
-
- /// constructor with another GenAddress
- GenAddress( const GenAddress &addr);
-
- /// destructor
- ~GenAddress();
-
- /// get the snmp syntax of the contained address
- SmiUINT32 get_syntax();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// assignment of a GenAddress
- GenAddress& operator=( const GenAddress &addr);
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// string representation of object value
- virtual const char *to_string();
-
- /// const char * operator overloaded for streaming output
- virtual operator const char *() const;
-
- /// return the type
- virtual addr_type get_type() const;
-
- /// return the address as a octet sequence
- virtual void to_octet(OctetStr& octet) const;
-
-protected:
- /// pointer to a a concrete address
- Address *address;
-
- /// output buffer of objects value
- char output_buffer[MAX_DISPLAY_SZ];
-
- /// redefined parse address for macs
- virtual int parse_address( const char *addr);
-
- /// format output for a generic address
- virtual void format_output();
-
- /// initialize smi data structure
- void init_smi();
-};
-
-#endif //_ADDRESS
diff --git a/ASNMP/asnmp/asn1.cpp b/ASNMP/asnmp/asn1.cpp
deleted file mode 100644
index 8a3b6f9c088..00000000000
--- a/ASNMP/asnmp/asn1.cpp
+++ /dev/null
@@ -1,1729 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// asn1.cpp
-//
-// = DESCRIPTION
-// The Vb class is an encapsulation of the snmp variable binding.
-// This module contains the class definition for the variable binding (VB)
-// class. The VB class is an encapsulation of a SNMP VB. A VB object is
-// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid
-// objects and thus requires the Oid class. To use this class,
-// set oid, value then call valid() to be sure object was constructed correctly.
-//
-// = AUTHOR
-// S. Waldbusser (assumed)
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/**********************************************************************
-// *
- * Abstract Syntax Notation One, ASN.1
- * As defined in ISO/IS 8824 and ISO/IS 8825
- * This implements a subset of the above International Standards that
- * is sufficient to implement SNMP.
- *
- * Encodes abstract data types into a machine independent stream of bytes.
- *
- Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University
-
- All Rights Reserved
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in
- supporting documentation, and that the name of CMU not be
- used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- SOFTWARE.
- ******************************************************************/
-
-#include "asnmp/asn1.h"
-#include "asnmp/snmp.h"
-#include "ace/OS_NS_string.h"
-
-ACE_RCSID(asnmp, asn1, "$Id$")
-
-/*
- * parse_int - pulls a long out of an ASN int type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::parse_int( u_char *data,
- int *datalength,
- u_char *type,
- long int *intp,
- int intsize)
-{
- ACE_TRACE("asn1::parse_int");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
- u_char *bufp = data;
- u_long asn_length;
- long value = 0;
-
- if (intsize != sizeof (long)){
- ASNERROR("not long");
- return 0;
- }
- *type = *bufp++;
- bufp =asn1::parse_length(bufp, &asn_length);
- if (bufp == 0){
- ASNERROR("bad length");
- return 0;
- }
- if ((int)(asn_length + (bufp - data)) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- if ((int)asn_length > intsize){
- ASNERROR("I don't support such large integers");
- return 0;
- }
- *datalength -= (int)asn_length + (bufp - data);
- if (*bufp & 0x80)
- value = -1; /* integer is negative */
- while(asn_length--)
- value = (value << 8) | *bufp++;
- *intp = value;
- return bufp;
-}
-
-
-/*
- * parse_unsigned_int - pulls an u_long out of an ASN int type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::parse_unsigned_int( u_char *data,
- int *datalength,
- u_char *type,
- u_long *intp,
- int intsize)
-{
- ACE_TRACE("asn1::parse_unsigned_int");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
- u_char *bufp = data;
- u_long asn_length;
- u_long value = 0;
-
- if (intsize != sizeof (long)){
- ASNERROR("not long");
- return 0;
- }
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0){
- ASNERROR("bad length");
- return 0;
- }
- if ((int)(asn_length + (bufp - data)) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- if (((int)asn_length > (intsize + 1)) ||
- (((int)asn_length == intsize + 1) && *bufp != 0x00)){
- ASNERROR("I don't support such large integers");
- return 0;
- }
- *datalength -= (int)asn_length + (bufp - data);
- if (*bufp & 0x80)
- value = (u_long) -1;
- while(asn_length--)
- value = (value << 8) | *bufp++;
- *intp = value;
- return bufp;
-}
-
-
-/*
- * build_int - builds an ASN object containing an integer.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::build_int( u_char *data,
- int *datalength,
- u_char type,
- long *intp,
- int intsize)
-{
- ACE_TRACE("asn1::build_int");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
-
- long integer;
- u_long mask;
-
- if (intsize != sizeof (long))
- return 0;
- integer = *intp;
- /*
- * Truncate "unnecessary" bytes off of the most significant end of this
- * 2's complement integer. There should be no sequence of 9
- * consecutive 1's or 0's at the most significant end of the
- * integer.
- */
- mask = u_long (0x1FF) << ((8 * (sizeof(u_long) - 1)) - 1);
- /* mask is 0xFF800000 on a big-endian machine */
- while((((integer & mask) == 0) || ((integer & mask) == mask))
- && intsize > 1){
- intsize--;
- integer <<= 8;
- }
- data = asn1::build_header(data, datalength, type, intsize);
- if (data == 0)
- return 0;
- if (*datalength < intsize)
- return 0;
- *datalength -= intsize;
- mask = u_long (0xFF) << (8 * (sizeof(u_long) - 1));
- /* mask is 0xFF000000 on a big-endian machine */
- while(intsize--){
- *data++ = (u_char)((integer & mask) >> (8 * (sizeof(long) - 1)));
- integer <<= 8;
- }
- return data;
-}
-
-
-/*
- * build_unsigned_int - builds an ASN object containing an integer.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::build_unsigned_int( u_char *data,
- int *datalength,
- u_char type,
- u_long *intp,
- int intsize)
-{
- ACE_TRACE("asn1::build_unsigned_int");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
-
- u_long integer;
- u_long mask;
- int add_null_byte = 0;
-
- if (intsize != sizeof (long))
- return 0;
- integer = *intp;
- mask = u_long (0xFF) << (8 * (sizeof(u_long) - 1));
- /* mask is 0xFF000000 on a big-endian machine */
- if ((u_char)((integer & mask) >> (8 * (sizeof(long) - 1))) & 0x80){
- /* if MSB is set */
- add_null_byte = 1;
- intsize++;
- }
- /*
- * Truncate "unnecessary" bytes off of the most significant end of this 2's complement integer.
- * There should be no sequence of 9 consecutive 1's or 0's at the most significant end of the
- * integer.
- */
- mask = u_long (0x1FF) << ((8 * (sizeof(u_long) - 1)) - 1);
- /* mask is 0xFF800000 on a big-endian machine */
- while((((integer & mask) == 0) || ((integer & mask) == mask)) && intsize > 1){
- intsize--;
- integer <<= 8;
- }
- data = asn1::build_header(data, datalength, type, intsize);
- if (data == 0)
- return 0;
- if (*datalength < intsize)
- return 0;
- *datalength -= intsize;
- if (add_null_byte == 1){
- *data++ = '\0';
- intsize--;
- }
- mask = u_long (0xFF) << (8 * (sizeof(u_long) - 1));
- /* mask is 0xFF000000 on a big-endian machine */
- while(intsize--){
- *data++ = (u_char)((integer & mask) >> (8 * (sizeof(long) - 1)));
- integer <<= 8;
- }
- return data;
-}
-
-
-/*
- * parse_string - pulls an octet string out of an ASN octet string type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * "string" is filled with the octet string.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::parse_string( u_char *data,
- int *datalength,
- u_char *type,
- u_char *string,
- int *strlength)
-{
- ACE_TRACE("asn1::parse_string");
- /*
- * ASN.1 octet string ::= primstring | cmpdstring
- * primstring ::= 0x04 asnlength byte {byte}*
- * cmpdstring ::= 0x24 asnlength string {string}*
- */
- u_char *bufp = data;
- u_long asn_length;
-
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0)
- return 0;
- if ((int)(asn_length + (bufp - data)) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- if ((int)asn_length > *strlength){
- ASNERROR("I don't support such long strings");
- return 0;
- }
- // fixed
- ACE_OS::memcpy((char *)string, (char *)bufp, (int)asn_length);
- *strlength = (int)asn_length;
- *datalength -= (int)asn_length + (bufp - data);
- return bufp + asn_length;
-}
-
-
-/*
- * build_string - Builds an ASN octet string object containing the input string.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::build_string( u_char *data,
- int *datalength,
- u_char type,
- u_char *string,
- int strlength)
-{
- ACE_TRACE("asn1::build_string");
- /*
- * ASN.1 octet string ::= primstring | cmpdstring
- * primstring ::= 0x04 asnlength byte {byte}*
- * cmpdstring ::= 0x24 asnlength string {string}*
- * This code will never send a compound string.
- */
- data = asn1::build_header(data, datalength, type, strlength);
- if (data == 0)
- return 0;
- if (*datalength < strlength)
- return 0;
- // fixed
- ACE_OS::memcpy((u_char *)data,(u_char *)string, strlength);
- *datalength -= strlength;
- return data + strlength;
-}
-
-
-/*
- * parse_header - interprets the ID and length of the current object.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * in this object following the id and length.
- *
- * Returns a pointer to the first byte of the contents of this object.
- * Returns 0 on any error.
- */
-u_char *asn1::parse_header( u_char *data,
- int *datalength,
- u_char *type)
-{
- ACE_TRACE("asn1::parse_header");
- u_char *bufp = data;
- register int header_len;
- u_long asn_length;
-
- /* this only works on data types < 30, i.e. no extension octets */
- if (IS_EXTENSION_ID(*bufp)){
- ASNERROR("can't process ID >= 30");
- return 0;
- }
- *type = *bufp;
- bufp = asn1::parse_length(bufp + 1, &asn_length);
- if (bufp == 0)
- return 0;
- header_len = bufp - data;
- if ((int)(header_len + asn_length) > *datalength){
- ASNERROR("asn length too long");
- return 0;
- }
- *datalength = (int)asn_length;
- return bufp;
-}
-
-/*
- * asn1::build_header - builds an ASN header for an object with the ID and
- * length specified.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * in this object following the id and length.
- *
- * This only works on data types < 30, i.e. no extension octets.
- * The maximum length is 0xFFFF;
- *
- * Returns a pointer to the first byte of the contents of this object.
- * Returns 0 on any error.
- */
-u_char * asn1::build_header( u_char *data,
- int *datalength,
- u_char type,
- int length)
-{
- ACE_TRACE("asn1::build_header");
- if (*datalength < 1)
- return 0;
- *data++ = type;
- (*datalength)--;
- return asn1::build_length(data, datalength, length);
-
-}
-
-/*
- * asn_build_sequence - builds an ASN header for a sequence with the ID and
- * length specified.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * in this object following the id and length.
- *
- * This only works on data types < 30, i.e. no extension octets.
- * The maximum length is 0xFFFF;
- *
- * Returns a pointer to the first byte of the contents of this object.
- * Returns 0 on any error.
- */
-u_char * asn1::build_sequence( u_char *data,
- int *datalength,
- u_char type,
- int length)
-{
- ACE_TRACE("asn1::build_sequence");
- *datalength -= 4;
- if (*datalength < 0){
- *datalength += 4; /* fix up before punting */
- return 0;
- }
- *data++ = type;
- *data++ = (u_char)(0x02 | ASN_LONG_LEN);
- *data++ = (u_char)((length >> 8) & 0xFF);
- *data++ = (u_char)(length & 0xFF);
- return data;
-}
-
-/*
- * parse_length - interprets the length of the current object.
- * On exit, length contains the value of this length field.
- *
- * Returns a pointer to the first byte after this length
- * field (aka: the start of the data field).
- * Returns 0 on any error.
- */
-u_char * asn1::parse_length( u_char *data,
- u_long *length)
-{
- ACE_TRACE("asn1::parse_length");
- u_char lengthbyte = *data;
-
- if (lengthbyte & ASN_LONG_LEN){
- lengthbyte &= ~ASN_LONG_LEN; /* turn MSb off */
- if (lengthbyte == 0){
- ASNERROR("We don't support indefinite lengths");
- return 0;
- }
- if (lengthbyte > sizeof(long)){
- ASNERROR("we can't support data lengths that long");
- return 0;
- }
- // fixed
- ACE_OS::memcpy((char *)length, (char *)data + 1, (int)lengthbyte);
- *length = ntohl(*length);
- *length >>= (8 * ((sizeof *length) - lengthbyte));
- return data + lengthbyte + 1;
- } else { /* short asnlength */
- *length = (long)lengthbyte;
- return data + 1;
- }
-}
-
-u_char *asn1::build_length( u_char *data,
- int *datalength,
- int length)
-{
- ACE_TRACE("asn1::build_length");
- u_char *start_data = data;
-
- /* no indefinite lengths sent */
- if (length < 0x80){
- if (*datalength < 1){
- ASNERROR("build_length");
- return 0;
- }
- *data++ = (u_char)length;
- } else if (length <= 0xFF){
- if (*datalength < 2){
- ASNERROR("build_length");
- return 0;
- }
- *data++ = (u_char)(0x01 | ASN_LONG_LEN);
- *data++ = (u_char)length;
- } else { /* 0xFF < length <= 0xFFFF */
- if (*datalength < 3){
- ASNERROR("build_length");
- return 0;
- }
- *data++ = (u_char)(0x02 | ASN_LONG_LEN);
- *data++ = (u_char)((length >> 8) & 0xFF);
- *data++ = (u_char)(length & 0xFF);
- }
- *datalength -= (data - start_data);
- return data;
-
-}
-
-/*
- * parse_objid - pulls an object indentifier out of an ASN object identifier type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * "objid" is filled with the object identifier.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::parse_objid( u_char *data,
- int *datalength,
- u_char *type,
- oid *objid,
- int *objidlength)
-{
- ACE_TRACE("asn1::parse_objid");
- /*
- * ASN.1 objid ::= 0x06 asnlength subidentifier {subidentifier}*
- * subidentifier ::= {leadingbyte}* lastbyte
- * leadingbyte ::= 1 7bitvalue
- * lastbyte ::= 0 7bitvalue
- */
- u_char *bufp = data;
- oid *oidp = objid + 1;
- u_long subidentifier;
- long length;
- u_long asn_length;
-
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0)
- return 0;
- if ((int)asn_length + (bufp - data) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- *datalength -= (int)asn_length + (bufp - data);
-
- /* Handle invalid object identifier encodings of the form 06 00 robustly */
- if (asn_length == 0)
- objid[0] = objid[1] = 0;
-
- length = asn_length;
- (*objidlength)--; /* account for expansion of first byte */
- while (length > 0 && (*objidlength)-- > 0){
- subidentifier = 0;
- do { /* shift and add in low order 7 bits */
- subidentifier = (subidentifier << 7) + (*(u_char *)bufp & ~ASN_BIT8);
- length--;
- } while (*(u_char *)bufp++ & ASN_BIT8); /* last byte has high bit clear */
- if (subidentifier > (u_long)MAX_SUBID){
- ASNERROR("subidentifier too long");
- return 0;
- }
- *oidp++ = (oid)subidentifier;
- }
-
- /*
- * The first two subidentifiers are encoded into the first component
- * with the value (X * 40) + Y, where:
- * X is the value of the first subidentifier.
- * Y is the value of the second subidentifier.
- */
- subidentifier = (u_long)objid[1];
- if (subidentifier == 0x2B){
- objid[0] = 1;
- objid[1] = 3;
- } else {
- objid[1] = (u_char)(subidentifier % 40);
- objid[0] = (u_char)((subidentifier - objid[1]) / 40);
- }
-
- *objidlength = (int)(oidp - objid);
- return bufp;
-}
-
-/*
- * build_objid - Builds an ASN object identifier object containing the
- * input string.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::build_objid( u_char *data,
- int *datalength,
- u_char type,
- oid *objid,
- int objidlength)
-{
- ACE_TRACE("asn1::build_objid");
- /*
- * ASN.1 objid ::= 0x06 asnlength subidentifier {subidentifier}*
- * subidentifier ::= {leadingbyte}* lastbyte
- * leadingbyte ::= 1 7bitvalue
- * lastbyte ::= 0 7bitvalue
- */
- u_char buf[MAX_OID_LEN];
- u_char *bp = buf;
- oid *op = objid;
- int asnlength;
- u_long subid, mask, testmask;
- int bits, testbits;
-
- if (objidlength < 2){
- *bp++ = 0;
- objidlength = 0;
- } else {
- *bp++ = (u_char) (op[1] + (op[0] * 40));
- objidlength -= 2;
- op += 2;
- }
-
- while(objidlength-- > 0){
- subid = *op++;
- if (subid < 127){ /* off by one? */
- *bp++ = (u_char )subid;
- } else {
- mask = 0x7F; /* handle subid == 0 case */
- bits = 0;
- /* testmask *MUST* !!!! be of an u_type */
- for(testmask = 0x7F, testbits = 0; testmask != 0;
- testmask <<= 7, testbits += 7){
- if (subid & testmask){ /* if any bits set */
- mask = testmask;
- bits = testbits;
- }
- }
- /* mask can't be zero here */
- for(;mask != 0x7F; mask >>= 7, bits -= 7){
- /* fix a mask that got truncated above */
- if (mask == 0x1E00000)
- mask = 0xFE00000;
- *bp++ = (u_char)(((subid & mask) >> bits) | ASN_BIT8);
- }
- *bp++ = (u_char)(subid & mask);
- }
- }
- asnlength = bp - buf;
- data = asn1::build_header(data, datalength, type, asnlength);
- if (data == 0)
- return 0;
- if (*datalength < asnlength)
- return 0;
- // fixed
- ACE_OS::memcpy((char *)data, (char *)buf, asnlength);
- *datalength -= asnlength;
- return data + asnlength;
-}
-
-/*
- * parse_null - Interprets an ASN null type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::parse_null(u_char *data,
- int *datalength,
- u_char *type)
-{
- ACE_TRACE("asn1::parse_null");
- /*
- * ASN.1 null ::= 0x05 0x00
- */
- u_char *bufp = data;
- u_long asn_length;
-
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0)
- return 0;
- if (asn_length != 0){
- ASNERROR("Malformed 0");
- return 0;
- }
- *datalength -= (bufp - data);
- return bufp + asn_length;
-}
-
-
-/*
- * build_null - Builds an ASN null object.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::build_null( u_char *data,
- int *datalength,
- u_char type)
-{
- ACE_TRACE("asn1::build_null");
- /*
- * ASN.1 null ::= 0x05 0x00
- */
- return asn1::build_header(data, datalength, type, 0);
-}
-
-/*
- * parse_bitstring - pulls a bitstring out of an ASN bitstring type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * "string" is filled with the bit string.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::parse_bitstring( u_char *data,
- int *datalength,
- u_char *type,
- u_char *string,
- int *strlength)
-{
- ACE_TRACE("asn1::parse_bitstring");
- /*
- * bitstring ::= 0x03 asnlength unused {byte}*
- */
- u_char *bufp = data;
- u_long asn_length;
-
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0)
- return 0;
- if ((int)(asn_length + (bufp - data)) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- if ((int) asn_length > *strlength){
- ASNERROR("I don't support such long bitstrings");
- return 0;
- }
- if (asn_length < 1){
- ASNERROR("Invalid bitstring");
- return 0;
- }
- if (*bufp > 7){
- ASNERROR("Invalid bitstring");
- return 0;
- }
- // fixed
- ACE_OS::memcpy((char *)string,(char *)bufp, (int)asn_length);
- *strlength = (int)asn_length;
- *datalength -= (int)asn_length + (bufp - data);
- return bufp + asn_length;
-}
-
-
-/*
- * build_bitstring - Builds an ASN bit string object containing the
- * input string.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the beginning of the next object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char *asn1::build_bitstring( u_char *data,
- int *datalength,
- u_char type,
- u_char *string,
- int strlength)
-{
- ACE_TRACE("asn1::build_bitstring");
- /*
- * ASN.1 bit string ::= 0x03 asnlength unused {byte}*
- */
- if (strlength < 1 || *string || *string > 7){
- ASNERROR("Building invalid bitstring");
- return 0;
- }
- data = asn1::build_header(data, datalength, type, strlength);
- if (data == 0)
- return 0;
- if (*datalength < strlength)
- return 0;
- // fixed
- ACE_OS::memcpy((char *)data,(char *)string, strlength);
- *datalength -= strlength;
- return data + strlength;
-}
-
-
-/*
- * parse_unsigned_int64 - pulls a 64 bit u_long out of an ASN int
- * type.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::parse_unsigned_int64(u_char *data,
- int *datalength,
- u_char *type,
- struct counter64 *cp,
- int countersize)
-{
- ACE_TRACE("asn1::parse_unsigned_int64");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
- u_char *bufp = data;
- u_long asn_length;
- u_long low = 0, high = 0;
- int intsize = 4;
-
- if (countersize != sizeof(struct counter64)){
- ASNERROR("not right size");
- return 0;
- }
- *type = *bufp++;
- bufp = asn1::parse_length(bufp, &asn_length);
- if (bufp == 0){
- ASNERROR("bad length");
- return 0;
- }
- if ((int)(asn_length + (bufp - data)) > *datalength){
- ASNERROR("overflow of message");
- return 0;
- }
- if (((int)asn_length > (intsize * 2 + 1)) ||
- (((int)asn_length == (intsize * 2) + 1) && *bufp != 0x00)){
- ASNERROR("I don't support such large integers");
- return 0;
- }
- *datalength -= (int)asn_length + (bufp - data);
- if (*bufp & 0x80){
- low = (u_long) -1; // integer is negative
- high = (u_long) -1;
- }
- while(asn_length--){
- high = (high << 8) | ((low & 0xFF000000) >> 24);
- low = (low << 8) | *bufp++;
- }
- cp->low = low;
- cp->high = high;
- return bufp;
-}
-
-
-/*
- * build_unsigned_int64 - builds an ASN object containing a 64 bit integer.
- * On entry, datalength is input as the number of valid bytes following
- * "data". On exit, it is returned as the number of valid bytes
- * following the end of this object.
- *
- * Returns a pointer to the first byte past the end
- * of this object (i.e. the start of the next object).
- * Returns 0 on any error.
- */
-u_char * asn1::build_unsigned_int64( u_char *data,
- int *datalength,
- u_char type,
- struct counter64 *cp,
- int countersize)
-{
- ACE_TRACE("asn1::build_unsigned_int64");
- /*
- * ASN.1 integer ::= 0x02 asnlength byte {byte}*
- */
-
- u_long low, high;
- u_long mask, mask2;
- int add_null_byte = 0;
- int intsize;
-
- if (countersize != sizeof (struct counter64))
- return 0;
- intsize = 8;
- low = cp->low;
- high = cp->high;
- mask = u_long (0xFF) << (8 * (sizeof(u_long) - 1));
- /* mask is 0xFF000000 on a big-endian machine */
- if ((u_char)((high & mask) >> (8 * (sizeof(long) - 1))) & 0x80){
- /* if MSB is set */
- add_null_byte = 1;
- intsize++;
- }
- /*
- * Truncate "unnecessary" bytes off of the most significant end of this 2's
- * complement integer.
- * There should be no sequence of 9 consecutive 1's or 0's at the most
- * significant end of the integer.
- */
- mask2 = u_long (0x1FF) << ((8 * (sizeof(u_long) - 1)) - 1);
- /* mask2 is 0xFF800000 on a big-endian machine */
- while((((high & mask2) == 0) || ((high & mask2) == mask2))
- && intsize > 1){
- intsize--;
- high = (high << 8)
- | ((low & mask) >> (8 * (sizeof(long) - 1)));
- low <<= 8;
- }
- data = asn1::build_header(data, datalength, type, intsize);
- if (data == 0)
- return 0;
- if (*datalength < intsize)
- return 0;
- *datalength -= intsize;
- if (add_null_byte == 1){
- *data++ = '\0';
- intsize--;
- }
- while(intsize--){
- *data++ = (u_char)((high & mask) >> (8 * (sizeof(long) - 1)));
- high = (high << 8)
- | ((low & mask) >> (8 * (sizeof(long) - 1)));
- low <<= 8;
-
- }
- return data;
-}
-
-
-// create a pdu
-struct snmp_pdu * cmu_snmp::pdu_create( int command)
-{
- ACE_TRACE("cmu_snmp::snmp_pdu_create");
- struct snmp_pdu *pdu;
-
- ACE_NEW_RETURN(pdu, snmp_pdu, 0);
- ACE_OS::memset((char *)pdu, 0,sizeof(struct snmp_pdu));
- pdu->command = command;
- pdu->errstat = 0;
- pdu->errindex = 0;
- pdu->enterprise = 0;
- pdu->enterprise_length = 0;
- pdu->variables = 0;
- return pdu;
-}
-
-// release a pdu from memory
-void cmu_snmp::free_pdu( struct snmp_pdu *pdu)
-{
- ACE_TRACE("cmu_snmp::free_pdu");
- struct variable_list *vp, *ovp;
-
- vp = pdu->variables;
- while(vp){
- // release the oid part
- if (vp->name)
- delete [] vp->name;
- // if deep data, then release as well
- if (vp->val.string)
- delete [] vp->val.string;
- ovp = vp;
- // go to the next one
- vp = vp->next_variable;
- // release up vb itself
- delete ovp;
- }
- // if enterprise release it up
- if (pdu->enterprise)
- delete [] pdu->enterprise;
- // release up pdu itself
- delete pdu;
-}
-
-
-// add a null var to a pdu
-void cmu_snmp::add_var(struct snmp_pdu *pdu,
- oid *name,
- int name_length,
- SmiVALUE *smival)
-{
- ACE_TRACE("cmu_snmp::add_var");
-
- struct variable_list *vars = 0;
-
- // if we don't have a vb list ,create one
- if (pdu->variables == 0) {
- ACE_NEW(pdu->variables, variable_list);
- vars = pdu->variables;
- }
- else
- { // we have one, find the end
- for(vars = pdu->variables; vars->next_variable; vars = vars->next_variable);
- // create one
- ACE_NEW(vars->next_variable, variable_list);
- // bump ptr
- vars = vars->next_variable;
- }
-
- // add the oid with no data
- vars->next_variable = 0;
-
- // hook in the Oid portion
- ACE_NEW(vars->name, oid[(name_length)]);
-
- // fixed
- ACE_OS::memcpy((char *)vars->name,(char *)name, name_length * sizeof(oid));
- vars->name_length = name_length;
-
- // hook in the SMI value
- switch( smival->syntax)
- {
- // null , do nothing
- case sNMP_SYNTAX_NULL:
- case sNMP_SYNTAX_NOSUCHOBJECT:
- case sNMP_SYNTAX_NOSUCHINSTANCE:
- case sNMP_SYNTAX_ENDOFMIBVIEW:
- {
- vars->type = (u_char) smival->syntax;
- vars->val.string = 0;
- vars->val_len = 0;
- }
- break;
-
- // octects
- case sNMP_SYNTAX_OCTETS:
- case sNMP_SYNTAX_OPAQUE:
- case sNMP_SYNTAX_IPADDR:
- {
- vars->type = (u_char) smival->syntax;
- ACE_NEW(vars->val.string,
- u_char[(unsigned)smival->value.string.len]);
- vars->val_len = (int) smival->value.string.len;
- ACE_OS::memcpy( (u_char *) vars->val.string,
- (u_char *) smival->value.string.ptr,
- (unsigned) smival->value.string.len);
- }
- break;
-
- // oid
- case sNMP_SYNTAX_OID:
- {
- vars->type = (u_char) smival->syntax;
- vars->val_len = (int) smival->value.oid.len * sizeof(oid);
- ACE_NEW(vars->val.objid, oid[(unsigned)vars->val_len]);
- ACE_OS::memcpy((u_long *)vars->val.objid,
- (u_long *)smival->value.oid.ptr,
- (unsigned) vars->val_len);
- }
- break;
-
-
-
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_GAUGE32:
- case sNMP_SYNTAX_UINT32:
- {
- long templong;
- vars->type = (u_char) smival->syntax;
- ACE_NEW(vars->val.integer, long);
- vars->val_len = sizeof(long);
- templong = (long) smival->value.uNumber;
- ACE_OS::memcpy( (long*) vars->val.integer,
- (long*) &templong,
- sizeof(long));
- }
- break;
-
- case sNMP_SYNTAX_INT32:
- {
- long templong;
- vars->type = (u_char) smival->syntax;
- ACE_NEW(vars->val.integer, long);
- vars->val_len = sizeof(long);
- templong = (long) smival->value.sNumber;
- ACE_OS::memcpy( (long*) vars->val.integer,
- (long*) &templong,
- sizeof(long));
- }
- break;
-
- // 64 bit counter
- case sNMP_SYNTAX_CNTR64:
- {
- vars->type = ( u_char) smival->syntax;
- ACE_NEW(vars->val.counter64, counter64);
- vars->val_len = sizeof(struct counter64);
- ACE_OS::memcpy( (struct counter64*) vars->val.counter64,
- (SmiLPCNTR64) &(smival->value.hNumber),
- sizeof( SmiCNTR64));
- }
- break;
-
- } // end switch
-
-}
-
-// build the authentication
-// works for v1 or v2c
-u_char *cmu_snmp::auth_build( u_char *data,
- int *length,
- long int version,
- u_char *community,
- int community_len,
- int messagelen)
-{
- ACE_TRACE("cmu_snmp::auth_build");
- u_char *params;
- int plen;
-
- params = community;
- plen = community_len;
-
- data = asn1::build_sequence(data,
- length,
- (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR),
- messagelen + plen + 5);
- if (data == 0){
- ASNERROR("buildheader");
- return 0;
- }
- data = asn1::build_int(data,
- length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&version,
- sizeof(version));
- if (data == 0){
- ASNERROR("buildint");
- return 0;
- }
-
- data = asn1::build_string(data,
- length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR),
- params,
- plen );
- if (data == 0){
- ASNERROR("buildstring");
- return 0;
- }
-
- return (u_char *)data;
-}
-
-
-// build a variable binding
-u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name,
- int *var_name_len,
- u_char var_val_type,
- int var_val_len, u_char *var_val,
- int *listlength)
-
-{
- ACE_TRACE("cmu_snmp::build_var_op");
- int dummyLen, headerLen;
- u_char *dataPtr;
-
- dummyLen = *listlength;
- dataPtr = data;
-
- data += 4;
- dummyLen -=4;
- if (dummyLen < 0)
- return 0;
-
- headerLen = data - dataPtr;
- *listlength -= headerLen;
- data = asn1::build_objid( data, listlength,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID),
- var_name, *var_name_len);
- if (data == 0) {
- ASNERROR("");
- return 0;
- }
-
- // based on the type...
- switch(var_val_type) {
- case ASN_INTEGER:
- data = asn1::build_int( data, listlength, var_val_type, (long *)var_val,
- var_val_len);
- break;
-
- case SMI_GAUGE:
- case SMI_COUNTER:
- case SMI_TIMETICKS:
- case SMI_UINTEGER:
- data = asn1::build_unsigned_int( data,
- listlength,
- var_val_type,
- (u_long *)var_val,
- var_val_len);
- break;
-
- case SMI_COUNTER64:
- data = asn1::build_unsigned_int64(data,
- listlength,
- var_val_type,
- (struct counter64 *)var_val,
- var_val_len);
- break;
-
- case ASN_OCTET_STR:
- case SMI_IPADDRESS:
- case SMI_OPAQUE:
- case SMI_NSAP:
- data = asn1::build_string(data, listlength, var_val_type,
- var_val, var_val_len);
- break;
-
- case ASN_OBJECT_ID:
- data = asn1::build_objid(data, listlength, var_val_type,
- (oid *)var_val, var_val_len / sizeof(oid));
- break;
-
- case ASN_NULL:
- data = asn1::build_null(data, listlength, var_val_type);
- break;
-
- case ASN_BIT_STR:
- data = asn1::build_bitstring(data, listlength, var_val_type,
- var_val, var_val_len);
- break;
-
- case SNMP_NOSUCHOBJECT:
- case SNMP_NOSUCHINSTANCE:
- case SNMP_ENDOFMIBVIEW:
- data = asn1::build_null(data, listlength, var_val_type);
- break;
-
- default:
- ASNERROR("wrong type");
- return 0;
- }
- if (data == 0) {
- ASNERROR("");
- return 0;
- }
- dummyLen = (data - dataPtr) - headerLen;
-
- asn1::build_sequence(dataPtr, &dummyLen,
- (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR),
- dummyLen);
- return data;
-}
-
-
-// serialize the pdu
-int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet,
- int *out_length, long version,
- u_char* community, int community_len)
-{
- ACE_TRACE("cmu_snmp::build");
- u_char buf[SNMP_MSG_LENGTH];
- u_char *cp;
- struct variable_list *vp;
- int length;
- int totallength;
-
- length = *out_length;
- cp = packet;
- for(vp = pdu->variables; vp; vp = vp->next_variable) {
- cp = cmu_snmp::build_var_op( cp, vp->name,
- &vp->name_length, vp->type,
- vp->val_len, (u_char *)vp->val.string,
- &length);
- if (cp == 0)
- return -1;
- }
- totallength = cp - packet;
-
- length = SNMP_MSG_LENGTH;
-
- // encode the total len
- cp = asn1::build_header( buf, &length,
- (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR),
- totallength);
- if (cp == 0)
- return -1;
- ACE_OS::memcpy( (char *)cp, (char *)packet,totallength);
- totallength += cp - buf;
-
- length = *out_length;
- if (pdu->command != TRP_REQ_MSG) {
-
- // request id
- cp = asn1::build_int( packet,
- &length,
- (u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->reqid,
- sizeof(pdu->reqid));
- if (cp == 0)
- return -1;
-
- // error status
- cp = asn1::build_int(cp,
- &length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->errstat, sizeof(pdu->errstat));
- if (cp == 0)
- return -1;
-
- // error index
- cp = asn1::build_int(cp,
- &length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->errindex, sizeof(pdu->errindex));
- if (cp == 0)
- return -1;
- }
- else { // this is a trap message
-
- // enterprise
- cp = asn1::build_objid( packet,
- &length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID),
- (oid *)pdu->enterprise,
- pdu->enterprise_length);
- if (cp == 0)
- return -1;
-
- // agent-addr
- cp = asn1::build_string(cp,
- &length,
- // HDN Fixed to use correct tag
- (u_char)SMI_IPADDRESS,
- //(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR),
- (u_char *)&pdu->agent_addr.sin_addr.s_addr,
- sizeof(pdu->agent_addr.sin_addr.s_addr));
- if (cp == 0)
- return -1;
-
- // generic trap
- cp = asn1::build_int(cp,
- &length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->trap_type,
- sizeof(pdu->trap_type));
- if (cp == 0)
- return -1;
-
- // specific trap
- cp = asn1::build_int( cp,
- &length,
- (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->specific_type,
- sizeof(pdu->specific_type));
- if (cp == 0)
- return -1;
-
- // timestamp
- cp = asn1::build_int(cp,
- &length,
- // HDN Fixed to use correct tag
- (u_char)SMI_TIMETICKS,
- //(u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
- (long *)&pdu->time,
- sizeof(pdu->time));
- if (cp == 0)
- return -1;
- }
-
- if (length < totallength)
- return -1;
- // fixed
- ACE_OS::memcpy((char *)cp, (char *)buf, totallength);
- totallength += cp - packet;
-
- length = SNMP_MSG_LENGTH;
- cp = asn1::build_header(buf,
- &length,
- (u_char)pdu->command,
- totallength);
- if (cp == 0)
- return -1;
- if (length < totallength)
- return -1;
- // fixed
- ACE_OS::memcpy((char *)cp, (char *)packet, totallength);
- totallength += cp - buf;
-
- length = *out_length;
-
- cp = cmu_snmp::auth_build( packet,
- &length,
- version,
- community,
- community_len,
- totallength );
- if (cp == 0)
- return -1;
- if ((*out_length - (cp - packet)) < totallength)
- return -1;
- // fixed
- ACE_OS::memcpy((char *)cp, (char *)buf, totallength);
- totallength += cp - packet;
- *out_length = totallength;
-
- return 0;
-}
-
-// parse the authentication header
-u_char *cmu_snmp::auth_parse(u_char *data,
- int *length, u_char *sid,
- int *slen, long *version)
-{
- ACE_TRACE("cmu_snmp::auth_parse");
- u_char type;
-
- // get the type
- data = asn1::parse_header( data, length, &type);
- if (data == 0){
- ASNERROR("bad header");
- return 0;
- }
-
- if (type != (ASN_SEQUENCE | ASN_CONSTRUCTOR)) {
- ASNERROR("wrong auth header type");
- return 0;
- }
-
- // get the version
- data = asn1::parse_int(data, length, &type, version, sizeof(*version));
- if (data == 0) {
- ASNERROR("bad parse of version");
- return 0;
- }
-
- // get the community name
- data = asn1::parse_string(data, length, &type, sid, slen);
- if (data == 0) {
- ASNERROR("bad parse of community");
- return 0;
- }
-
- return (u_char *)data;
-}
-
-/* u_char *data, // IN - pointer to the start of object
- oid *var_name, // OUT - object id of variable
- int *var_name_len, // IN/OUT - length of variable name
- u_char *var_val_type, // OUT - type of variable
- (int or octet string) (one byte)
- int *var_val_len, // OUT - length of variable
- u_char **var_val, // OUT - pointer to ASN1 encoded value of variable
-*/
-
-u_char *
-cmu_snmp::parse_var_op( u_char *data, oid *var_name,
- int *var_name_len, u_char *var_val_type,
- int *var_val_len, u_char **var_val,
- int *listlength)
-{
- ACE_TRACE("cmu_snmp::parse_var_op");
- u_char var_op_type;
- int var_op_len = *listlength;
- u_char *var_op_start = data;
-
- data = asn1::parse_header(data, &var_op_len, &var_op_type);
- if (data == 0){
- ASNERROR("");
- return 0;
- }
- if (var_op_type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR))
- return 0;
- data = asn1::parse_objid(data, &var_op_len, &var_op_type, var_name, var_name_len);
- if (data == 0) {
- ASNERROR("");
- return 0;
- }
- if (var_op_type != (u_char)
- (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID))
- return 0;
- *var_val = data; /* save pointer to this object */
- /* find out what type of object this is */
- data = asn1::parse_header(data, &var_op_len, var_val_type);
- if (data == 0) {
- ASNERROR("");
- return 0;
- }
- *var_val_len = var_op_len;
- data += var_op_len;
- *listlength -= (int)(data - var_op_start);
- return data;
-}
-
-
-
-// build a pdu from a data and length
-int cmu_snmp::parse( struct snmp_pdu *pdu,
- u_char *data,
- u_char *community_name,
- u_long &community_len,
- snmp_version &spp_version,
- int length)
-{
- ACE_TRACE("cmu_snmp::parse");
- u_char msg_type;
- u_char type;
- u_char *var_val;
- long version;
- int len, four;
- u_char community[256];
- int community_length = 256;
- struct variable_list *vp = 0;
- oid objid[MAX_NAME_LEN], *op;
-
- // authenticates message and returns length if valid
- data = cmu_snmp::auth_parse(data,
- &length,
- community,
- &community_length,
- &version);
- if (data == 0)
- return -1;
-
- // copy the returned community name
- ACE_OS::memcpy( (u_char *) community_name,
- (u_char *) community,
- community_length);
- community_len = (long) community_length;
-
- if( version != SNMP_VERSION_1 && version != SNMP_VERSION_2C ) {
- ASNERROR("Wrong version");
- return -1;
- }
-
- spp_version = (snmp_version) version;
-
- data = asn1::parse_header(data,
- &length,
- &msg_type);
- if (data == 0)
- return -1;
- pdu->command = msg_type;
-
- if (pdu->command != TRP_REQ_MSG){
- // get the rid
- data = asn1::parse_int(data,
- &length, &type,
- (long *)&pdu->reqid,
- sizeof(pdu->reqid));
- if (data == 0)
- return -1;
- // get the error status
- data = asn1::parse_int(data,
- &length,
- &type,
- (long *)&pdu->errstat,
- sizeof(pdu->errstat));
- if (data == 0)
- return -1;
- // get the error index
- data = asn1::parse_int(data,
- &length,
- &type,
- (long *)&pdu->errindex,
- sizeof(pdu->errindex));
- if (data == 0)
- return -1;
- }
- else { // is a trap
-
- // get the enterprise
- pdu->enterprise_length = MAX_NAME_LEN;
- data = asn1::parse_objid(data,
- &length,
- &type,
- objid,
- &pdu->enterprise_length);
- if (data == 0)
- return -1;
-
- ACE_NEW_RETURN(pdu->enterprise,
- oid[pdu->enterprise_length*sizeof(oid)],-1);
-
- // fixed
- ACE_OS::memcpy((char *)pdu->enterprise,(char *)objid,
- pdu->enterprise_length * sizeof(oid));
-
- // get source address
- four = 4;
- data = asn1::parse_string(data, &length, &type,
- (u_char *)&pdu->agent_addr.sin_addr.s_addr,
- &four);
- if (data == 0)
- return -1;
-
- // get trap type
- data = asn1::parse_int(data, &length, &type, (long *)&pdu->trap_type,
- sizeof(pdu->trap_type));
- if (data == 0)
- return -1;
-
- // trap type
- data = asn1::parse_int(data, &length, &type, (long *)&pdu->specific_type,
- sizeof(pdu->specific_type));
- if (data == 0)
- return -1;
-
- // timestamp
- data = asn1::parse_int(data, &length, &type, (long *)&pdu->time,
- sizeof(pdu->time));
- if (data == 0)
- return -1;
- }
-
- // get the vb list
- data = asn1::parse_header(data, &length, &type);
- if (data == 0)
- return -1;
-
- if (type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR))
- return -1;
-
- while((int)length > 0) {
- if (pdu->variables == 0) {
- ACE_NEW_RETURN(pdu->variables, variable_list, -1);
- vp = pdu->variables;
- } else {
- ACE_NEW_RETURN(vp->next_variable, variable_list, -1);
- vp = vp->next_variable;
- }
- vp->next_variable = 0;
- vp->val.string = 0;
- vp->name = 0;
- vp->name_length = MAX_NAME_LEN;
- data = cmu_snmp::parse_var_op( data, objid,
- &vp->name_length, &vp->type,
- &vp->val_len, &var_val,
- (int *)&length);
- if (data == 0)
- return -1;
-
- ACE_NEW_RETURN(op, oid[(unsigned)vp->name_length * sizeof(oid)], -1);
-
- // fixed
- ACE_OS::memcpy((char *)op, (char *)objid, vp->name_length * sizeof(oid));
- vp->name = op;
-
- len = SNMP_MSG_LENGTH;
- switch((short)vp->type) {
- case ASN_INTEGER:
- case SMI_COUNTER:
- case SMI_GAUGE:
- case SMI_TIMETICKS:
- case SMI_UINTEGER:
- ACE_NEW_RETURN(vp->val.integer,long, -1);
- vp->val_len = sizeof(long);
- asn1::parse_int(var_val, &len, &vp->type, (long *)vp->val.integer, sizeof(vp->val.integer));
- break;
- case SMI_COUNTER64:
- ACE_NEW_RETURN(vp->val.counter64, counter64, -1);
- vp->val_len = sizeof(struct counter64);
- asn1::parse_unsigned_int64(var_val, &len, &vp->type,
- (struct counter64 *)vp->val.counter64,
- sizeof(*vp->val.counter64));
- break;
-
- case ASN_OCTET_STR:
- case SMI_IPADDRESS:
- case SMI_OPAQUE:
- case SMI_NSAP:
- ACE_NEW_RETURN(vp->val.string, u_char[(unsigned)vp->val_len + 1], -1);
- asn1::parse_string(var_val, &len, &vp->type, vp->val.string,
- &vp->val_len);
- break;
-
- case ASN_OBJECT_ID:
- vp->val_len = MAX_NAME_LEN;
- asn1::parse_objid(var_val, &len, &vp->type, objid, &vp->val_len);
- //vp->val_len *= sizeof(oid);
-
- ACE_NEW_RETURN(vp->val.objid, oid[(unsigned)vp->val_len*sizeof(oid)], -1);
-
- // fixed
- ACE_OS::memcpy((char *)vp->val.objid,
- (char *)objid,
- vp->val_len * sizeof(oid));
- break;
-
- case SNMP_NOSUCHOBJECT:
- case SNMP_NOSUCHINSTANCE:
- case SNMP_ENDOFMIBVIEW:
- case ASN_NULL:
- break;
- default:
- ASNERROR("bad type returned ");
- break;
- }
- }
- return 0;
-}
diff --git a/ASNMP/asnmp/asn1.h b/ASNMP/asnmp/asn1.h
deleted file mode 100644
index 3be7e3925ef..00000000000
--- a/ASNMP/asnmp/asn1.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/* -*-C++-*- */
-#ifndef ASN1
-#define ASN1
-//=============================================================================
-/**
- * @file asn1.h
- *
- * $Id$
- *
- * Abstract Syntax Notation One, ASN.1
- * As defined in ISO/IS 8824 and ISO/IS 8825
- * This implements a subset of the above International Standards that
- * is sufficient to implement SNMP.
- *
- *
- * @author Steve Waldbusser/CMU ?
- */
-//=============================================================================
-
-
-/**********************************************************************
- Copyright 1988, 1989, 1991, 1992 by Carnegie Mellon University
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of CMU not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-******************************************************************/
-
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/snmp.h"
-
-// CMU code to define "oid" typedef (old C style)
-#ifndef EIGHTBIT_SUBIDS
-typedef unsigned long oid;
-#define MAX_SUBID 0xFFFFFFFF
-#else
-typedef unsigned char oid;
-#define MAX_SUBID 0xFF
-#endif
-
-#define MAX_OID_LEN 64 /* max subid's in an oid */
-
-
-// asn.1 values
-#define ASN_BOOLEAN (0x01)
-#define ASN_INTEGER (0x02)
-#define ASN_BIT_STR (0x03)
-#define ASN_OCTET_STR (0x04)
-#define ASN_NULL (0x05)
-#define ASN_OBJECT_ID (0x06)
-#define ASN_SEQUENCE (0x10)
-#define ASN_SET (0x11)
-#define ASN_UNIVERSAL (0x00)
-#define ASN_APPLICATION (0x40)
-#define ASN_CONTEXT (0x80)
-#define ASN_PRIVATE (0xC0)
-#define ASN_PRIMITIVE (0x00)
-#define ASN_CONSTRUCTOR (0x20)
-#define ASN_LONG_LEN (0x80)
-#define ASN_EXTENSION_ID (0x1F)
-#define ASN_BIT8 (0x80)
-
-#define IS_CONSTRUCTOR(byte) ((byte) & ASN_CONSTRUCTOR)
-#define IS_EXTENSION_ID(byte) (((byte) & ASN_EXTENSION_ID) == ASN_EXTENSION_ID)
-
-#define ASNERROR( string)
-#define MAX_NAME_LEN 64
-#define SNMP_VERSION_1 0
-#define SNMP_VERSION_2C 1
-
-
-// defined types (from the SMI, RFC 1065)
-#define SMI_IPADDRESS (ASN_APPLICATION | 0)
-#define SMI_COUNTER (ASN_APPLICATION | 1)
-#define SMI_GAUGE (ASN_APPLICATION | 2)
-#define SMI_TIMETICKS (ASN_APPLICATION | 3)
-#define SMI_OPAQUE (ASN_APPLICATION | 4)
-#define SMI_NSAP (ASN_APPLICATION | 5)
-#define SMI_COUNTER64 (ASN_APPLICATION | 6)
-#define SMI_UINTEGER (ASN_APPLICATION | 7)
-
-#define GET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)
-#define GETNEXT_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)
-#define GET_RSP_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)
-#define SET_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)
-#define TRP_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4)
-
-#define GETBULK_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
-#define INFORM_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
-#define TRP2_REQ_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)
-#define REPORT_MSG (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8)
-
-#define SNMP_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x0)
-#define SNMP_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x1)
-#define SNMP_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x2)
-
-#define SNMP_MSG_LENGTH 1500
-
-typedef struct sockaddr_in ipaddr;
-
-// pdu
-struct snmp_pdu {
- int command; // pdu type
- unsigned long reqid; // Request id
- unsigned long errstat; // Error status
- unsigned long errindex; // Error index
-
- // Trap information
- oid *enterprise; // System OID
- int enterprise_length;
- ipaddr agent_addr; // address of object generating trap
- int trap_type; // trap type
- int specific_type; // specific type
- unsigned long time; // Uptime
-
- // vb list
- struct variable_list *variables;
-};
-
-// vb list
-struct variable_list {
- struct variable_list *next_variable; // 0 for last variable
- oid *name; // Object identifier of variable
- int name_length; // number of subid's in name
- unsigned char type; // ASN type of variable
- union { // value of variable
- long *integer;
- unsigned char *string;
- oid *objid;
- unsigned char *bitstring;
- struct counter64 *counter64;
- } val;
- int val_len;
-};
-
-struct counter64 {
- unsigned long high;
- unsigned long low;
-};
-
-// CMU Interface class for ASN.1 routines
-/**
- * @class asn1
- *
- * @brief Defines the member functions for the asn1 concrete interface class
- * CMU routines for performing ASN.1 data marshalling / representation
- */
-class ASNMP_Export asn1
-
-{
-public:
-static unsigned char *parse_int( unsigned char *data,
- int *datalength,
- unsigned char *type,
- long int *intp,
- int intsize);
-static unsigned char *parse_unsigned_int( unsigned char *data,
- int *datalength,
- unsigned char *type,
- unsigned long *intp,
- int intsize);
-static unsigned char *build_int( unsigned char *data,
- int *datalength,
- unsigned char type,
- long *intp,
- int intsize);
-
-static unsigned char *build_unsigned_int( unsigned char *data,
- int *datalength,
- unsigned char type,
- unsigned long *intp,
- int intsize);
-
-static unsigned char *parse_string( unsigned char *data,
- int *datalength,
- unsigned char *type,
- unsigned char *string,
- int *strlength);
-
-static unsigned char *build_string( unsigned char *data,
- int *datalength,
- unsigned char type,
- unsigned char *string,
- int strlength);
-
-static unsigned char *parse_header( unsigned char *data,
- int *datalength,
- unsigned char *type);
-
-static unsigned char * build_header( unsigned char *data,
- int *datalength,
- unsigned char type,
- int length);
-
-static unsigned char * build_sequence( unsigned char *data,
- int *datalength,
- unsigned char type,
- int length);
-
-static unsigned char * parse_length( unsigned char *data,
- unsigned long *length);
-
-static unsigned char *build_length( unsigned char *data,
- int *datalength,
- int length);
-
-static unsigned char *build_objid( unsigned char *data,
- int *datalength,
- unsigned char type,
- oid *objid,
- int objidlength);
-
-static unsigned char *parse_objid( unsigned char *data,
- int *datalength,
- unsigned char *type,
- oid *objid,
- int *objidlength);
-
-static unsigned char *parse_null(unsigned char *data,
- int *datalength, unsigned
- char *type);
-
-static unsigned char *build_null( unsigned char *data,
- int *datalength,
- unsigned char type);
-
-static unsigned char *parse_bitstring( unsigned char *data,
- int *datalength,
- unsigned char *type,
- unsigned char *string,
- int *strlength);
-
-static unsigned char *build_bitstring( unsigned char *data,
- int *datalength,
- unsigned char type,
- unsigned char *string,
- int strlength);
-
-static unsigned char * parse_unsigned_int64(unsigned char *data,
- int *datalength,
- unsigned char *type,
- struct counter64 *cp,
- int countersize);
-
-static unsigned char * build_unsigned_int64( unsigned char *data,
- int *datalength,
- unsigned char type,
- struct counter64 *cp,
- int countersize);
-
-};
-
-
-// CMU Interface class for SNMPv1, SNMPv2c routines
-/**
- * @class cmu_snmp
- *
- * @brief Defines the static functions for the cmu_snmp concrete class.
- * These routine create cmu pdu's that can be sent/received on/from agents
- */
-class ASNMP_Export cmu_snmp
-{
- public:
- static struct snmp_pdu *pdu_create( int command);
- static void free_pdu( struct snmp_pdu *pdu);
- static int build( struct snmp_pdu *pdu,
- unsigned char *packet,
- int *out_length,
- long version,
- unsigned char* community,
- int community_len);
-
- static void add_var(struct snmp_pdu *pdu,
- oid *name,
- int name_length,
- SmiVALUE *smival);
-
- static int parse( struct snmp_pdu *pdu,
- unsigned char *data,
- unsigned char *community_name,
- unsigned long &community_len,
- snmp_version &version,
- int length);
- static unsigned char *auth_build( unsigned char *data,
- int *length,
- long int version,
- unsigned char *community,
- int community_len,
- int messagelen);
-
- static unsigned char *build_var_op(unsigned char *data,
- oid * var_name,
- int *var_name_len,
- unsigned char var_val_type,
- int var_val_len,
- unsigned char *var_val,
- int *listlength);
-
-
-static unsigned char *auth_parse(unsigned char *data,
- int *length,
- unsigned char *sid,
- int *slen,
- long *version);
-
-/*
- @params data, IN - pointer to the start of object
- var_name OUT - object id of variable
- var_name_len IN/OUT - length of variable name
- var_val_type OUT - type of variable (int or octet string) (one byte)
- var_val_len OUT - length of variable
- var_val, OUT - pointer to ASN1 encoded value of variable
- listlength IN/OUT - number of valid bytes left in var_op_list
-*/
-static unsigned char *parse_var_op( unsigned char *data,
- oid *var_name,
- int *var_name_len,
- unsigned char *var_val_type,
- int *var_val_len,
- unsigned char **var_val,
- int *listlength);
-
-};
-
-#endif // ASN1
-
diff --git a/ASNMP/asnmp/asnmp.mpc b/ASNMP/asnmp/asnmp.mpc
deleted file mode 100644
index 40063285e2b..00000000000
--- a/ASNMP/asnmp/asnmp.mpc
+++ /dev/null
@@ -1,26 +0,0 @@
-// $Id$
-
-project (asnmp_lib) : acelib {
- sharedname = asnmp
- dynamicflags = ASNMP_BUILD_DLL
- includes += $(ACE_ROOT)/ASNMP
-
- source_files {
- address.cpp
- asn1.cpp
- counter.cpp
- ctr64.cpp
- gauge.cpp
- integer.cpp
- octet.cpp
- oid.cpp
- pdu.cpp
- snmp.cpp
- target.cpp
- timetick.cpp
- transaction.cpp
- vb.cpp
- wpdu.cpp
- sagent.cpp
- }
-}
diff --git a/ASNMP/asnmp/counter.cpp b/ASNMP/asnmp/counter.cpp
deleted file mode 100644
index c62b1d0a20a..00000000000
--- a/ASNMP/asnmp/counter.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// counter.cpp
-//
-// = DESCRIPTION
-// Class implementation for SMI Counter32 class.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/counter.h"
-
-ACE_RCSID(asnmp, counter, "$Id$")
-
-// constructor with a value
-Counter32::Counter32( const unsigned long i):SnmpUInt32(i)
-{
- smival.syntax = sNMP_SYNTAX_CNTR32;
-}
-
-// copy constructor
-Counter32::Counter32( const Counter32 &c)
- : SnmpUInt32 (c)
-{
- this->smival.value.uNumber = c.smival.value.uNumber;
- smival.syntax = sNMP_SYNTAX_CNTR32;
- valid_flag = 1;
-}
-
-// syntax type
-SmiUINT32 Counter32::get_syntax()
-{
- return sNMP_SYNTAX_CNTR32;
-}
-
-// general assignment from any Value
-SnmpSyntax& Counter32::operator=( SnmpSyntax &in_val){
- if ( this == &in_val ) // handle assignement from itself
- return *this;
-
- valid_flag = 0; // will get set true if really valid
- if (in_val.valid())
- {
- switch (in_val.get_syntax())
- {
- case sNMP_SYNTAX_UINT32:
- // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_INT32: // implied cast int -> uint
- this->smival.value.uNumber =
- ((Counter32 &)in_val).smival.value.uNumber;
- valid_flag = 1;
- break;
- }
- }
- return *this;
-}
-
-// overloaded assignment
-Counter32& Counter32::operator=( const unsigned long int i)
-{
- this->smival.value.uNumber=i;
- return *this;
-}
-
-// overloaded assignment
-Counter32& Counter32::operator=( const Counter32 &uli)
-{
- this->smival.value.uNumber = uli.smival.value.uNumber;
- return *this;
-}
-
-// otherwise, behave like an unsigned long int
-Counter32::operator unsigned long()
-{
- return this->smival.value.uNumber;
-}
-
-// clone
-SnmpSyntax * Counter32::clone() const
-{
- return ( SnmpSyntax *) new Counter32(*this);
-}
diff --git a/ASNMP/asnmp/counter.h b/ASNMP/asnmp/counter.h
deleted file mode 100644
index 36fda2f84ce..00000000000
--- a/ASNMP/asnmp/counter.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*-C++-*- */
-#ifndef COUNTER_
-#define COUNTER_
-//=============================================================================
-/**
- * @file counter.h
- *
- * $Id$
- *
- * Class definition for SMI Counter32 class.
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/smival.h"
-#include "asnmp/integer.h"
-
-//------------[ Counter32 Class ]------------------------------------------
-// The counter class allows all the functionality of unsigned
-// 32 bit integers but is recognized as a distinct SMI type. Counter32
-// class objects may be set or get into Vb objects.
-//
-// This class does not behave as defined by the abstract model
-// in RFC 1155 section 3.2.3.3
-
-/**
- * @class Counter32
- *
- * @brief Defines the member functions for the Counter32 concrete class
- * This class implements RFC 1155 Counter Object and is named
- * Counter32 after the RFC1902 redefinition of V1 SMI datatypes
- */
-class ASNMP_Export Counter32 : public SnmpUInt32
-{
- public:
- /// constructor with a value
- Counter32( const unsigned long i = 0);
-
- /// copy constructor
- Counter32( const Counter32 &c);
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// overloaded assignment
- Counter32& operator=( const Counter32 &uli);
-
- /// overloaded assignment
- Counter32& operator=( const unsigned long i);
-
- /// otherwise, behave like an unsigned long int
- operator unsigned long();
-};
-
-#endif // COUNTER_
diff --git a/ASNMP/asnmp/ctr64.cpp b/ASNMP/asnmp/ctr64.cpp
deleted file mode 100644
index df3468a1475..00000000000
--- a/ASNMP/asnmp/ctr64.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// ctr64.cpp
-//
-// = DESCRIPTION
-// Implementation for Counter64 ( 64 bit counter class).
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/ctr64.h"
-#include "ace/OS_NS_stdio.h"
-
-ACE_RCSID(asnmp, ctr64, "$Id$")
-
-#define MAX32 4294967295u
-
-//-----------[ syntax type ]----------------------------------------------
-SmiUINT32 Counter64::get_syntax()
-{
- return sNMP_SYNTAX_CNTR64;
-}
-
-//------------------[ constructor with values ]--------------------------
-Counter64::Counter64( unsigned long hiparm, unsigned long loparm)
-{
- smival.syntax = sNMP_SYNTAX_CNTR64;
- smival.value.hNumber.hipart = hiparm;
- smival.value.hNumber.lopart = loparm;
-}
-
-//------------------[ constructor with low value only ]------------------
-Counter64::Counter64( ACE_UINT64 llw )
-{
- smival.syntax = sNMP_SYNTAX_CNTR64;
- smival.value.hNumber.hipart = (unsigned long) (llw >> 32);
- smival.value.hNumber.lopart = (unsigned long) llw & 0xffffffff;
-}
-
-//------------------[ copy constructor ]---------------------------------
-Counter64::Counter64( const Counter64 &ctr64 )
- : SnmpSyntax (ctr64)
-{
- smival.syntax = sNMP_SYNTAX_CNTR64;
- smival.value.hNumber.hipart = ctr64.high();
- smival.value.hNumber.lopart = ctr64.low();
-}
-
-//------------------[ destructor ]---------------------------------
-Counter64::~Counter64()
-{
-}
-
-
-//------------------[ Counter64::high() ]------------------------------
-// return the high part
-unsigned long Counter64::high() const
-{
- return smival.value.hNumber.hipart;
-}
-
-
-//------------------[ Counter64::low() ]-------------------------------
-// return the low part
-unsigned long Counter64::low() const
-{
- return smival.value.hNumber.lopart;
-}
-
-//------------------[ set_high( const unsigned long h) ]-----------
-// set the high part
-void Counter64::set_high( const unsigned long h)
-{
- smival.value.hNumber.hipart = h;
-}
-
-//------------------[ set_low( const unsigned long l) ]------------
-// set the low part
-void Counter64::set_low( const unsigned long l)
-{
- smival.value.hNumber.lopart = l;
-}
-
-
-//-----------[ to_long_double( Counter64 c64) ]-----------------------------
-// convert a Counter 64 to a long double
-long double Counter64::to_long_double() const
-{
- long double ld = this->high();
- ld *= MAX32;
- ld += this->low();
- return ld;
-}
-
-
-//-----------[ ld_to_c64( long double ld) ]----------------------------
-// convert a long double to a Counter64
-// semantics changed from prior version
-Counter64& Counter64::assign( long double ld)
-{
- smival.syntax = sNMP_SYNTAX_CNTR64;
- unsigned long h = smival.value.hNumber.hipart = (unsigned long)(ld / MAX32);
- smival.value.hNumber.lopart = (unsigned long)(ld - h);
- return *this;
-}
-
-//----------------[ general Value = operator ]---------------------
-SnmpSyntax& Counter64::operator=( SnmpSyntax &val)
-{
- // protect against assignment from itself
- if ( this == &val )
- return *this;
-
- smival.value.hNumber.lopart = 0; // pessimsitic - assume no mapping
- smival.value.hNumber.hipart = 0;
-
- // try to make assignment valid
- if (val.valid()){
- switch (val.get_syntax()){
- case sNMP_SYNTAX_CNTR64:
- smival.value.hNumber.hipart =
- ((Counter64 &)val).smival.value.hNumber.hipart;
- smival.value.hNumber.lopart =
- ((Counter64 &)val).smival.value.hNumber.lopart;
- break;
-
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_GAUGE32:
- // case sNMP_SYNTAX_UINT32: .. indistinguishable from GAUGE32
- case sNMP_SYNTAX_INT32:
- // take advantage of union...
- smival.value.hNumber.lopart = ((Counter64 &)val).smival.value.uNumber;
- smival.value.hNumber.hipart = 0;
- break;
- }
- }
- return *this;
-}
-
-// overloaded assignment
-Counter64& Counter64::operator=( const ACE_UINT64 rhs)
-{
- smival.value.hNumber.hipart = (unsigned long) (rhs >> 32);
- smival.value.hNumber.lopart = (unsigned long) rhs;
- return *this;
-}
-
-// overloaded assignment
-Counter64& Counter64::operator=( const Counter64 &rhs)
-{
- smival.value.hNumber.hipart = rhs.high();
- smival.value.hNumber.lopart = rhs.low();
- return *this;
-}
-
-// otherwise, behave like an unsigned long int
-Counter64::operator ACE_UINT64()
-{
- ACE_UINT64 val = smival.value.hNumber.hipart;
- val = val << 32; // shift right 4 bytes
- val |= smival.value.hNumber.lopart;
- return val;
-}
-
-//----------------[ Counter64::clone() ]-----------------------------------
-// create a new instance of this Value
-SnmpSyntax* Counter64::clone() const
-{
- return ( SnmpSyntax *) new Counter64(*this);
-}
-
-//----------------[ Counter64::valid() ]-------------------------------------
-int Counter64::valid() const
-{
- return 1;
-}
-
-//----------[ return ASCII format ]-------------------------
-// TODO: Fix up to do real 64bit decimal value printing...
-// For now, print > 32-bit values in hex
-const char * Counter64::to_string()
-{
- if ( high() != 0 )
- sprintf(output_buffer, "0x%X%08X",
- (unsigned int)high(), (unsigned int)low());
- else
- sprintf(output_buffer, "%d", (int) low());
- return output_buffer;
-}
diff --git a/ASNMP/asnmp/ctr64.h b/ASNMP/asnmp/ctr64.h
deleted file mode 100644
index 6b97b9966f2..00000000000
--- a/ASNMP/asnmp/ctr64.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* -*-C++-*- */
-#ifndef CTR64_
-#define CTR64_
-//=============================================================================
-/**
- * @file ctr64.h
- *
- * $Id$
- *
- * SNMP Counter64 class definition.
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/smival.h"
-#include "ace/Basic_Types.h"
-
-#define CTR64OUTBUF 30 // maximum ascii string for a 64-bit ctr
-
-
-//---------[ 64 bit Counter Class ]--------------------------------
-// Counter64 Class encapsulates two unsigned integers into a
-// a single entity. This type has is available in SNMPv2 but
-// may be used anywhere where needed.
-//
-/**
- * @class Counter64
- *
- * @brief Defines the member functions for the Counter64 concrete class
- * This class implements RFC 1902 64 bit Counter Object.
- */
-class ASNMP_Export Counter64 : public SnmpSyntax
-{
-public:
- /// default constructor
- Counter64( ACE_UINT64 llw = 0);
-
- /// constructor with values
- Counter64( unsigned long hiparm, unsigned long loparm);
-
- /// copy constructor
- Counter64( const Counter64 &ctr64);
-
- /// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
- ~Counter64();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// return a long double representation
- long double to_long_double() const;
-
- /// assign a long double to a counter64
- Counter64& assign( long double ld);
-
- /// return the high part
- unsigned long high() const;
-
- /// return the low part
- unsigned long low() const;
-
- /// set the high part
- void set_high( const unsigned long h);
-
- /// set the low part
- void set_low( const unsigned long l);
-
- /// overloaded assignment
- Counter64& operator=( const ACE_UINT64 rhs);
-
- /// overloaded assignment
- Counter64& operator=( const Counter64 &rhs);
-
- /// get a printable ASCII representation
- const char *to_string();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// general validity test, always true
- int valid() const;
-
- /// otherwise, behave like an ACE_UINT64
- operator ACE_UINT64();
-
-protected:
- char output_buffer[CTR64OUTBUF];
-};
-
-#endif // CTR64_
diff --git a/ASNMP/asnmp/enttraps.h b/ASNMP/asnmp/enttraps.h
deleted file mode 100644
index 433538eb258..00000000000
--- a/ASNMP/asnmp/enttraps.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* -*-C++-*- */
-#ifndef ENTTRAPS_
-#define ENTTRAPS_
-//=============================================================================
-/**
- * @file enttraps.h
- *
- * $Id$
- *
- * constants for Enterprise Traps
- *
- *
- * @author Peter E MellquistMichael R MacFaden mrm@cisco.com - rework & ACE port
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/asn1.h" // ASN.1 header file
-
-//--------------[ well known trap ids ]-----------------------------------
-/**
- * @class snmpTrapsOid
- *
- * @brief Defines the member functions for the snmpTrapsOid base class
- * to implement the traps defined in RFC 1215
- */
-class ASNMP_Export snmpTrapsOid : public Oid
-{
- public:
- snmpTrapsOid (void):Oid("1.3.6.1.6.3.1.1.5"){}
- SnmpSyntax& operator=( SnmpSyntax &val){ return Oid::operator=(val); }
-};
-
-/**
- * @class snmpTrapEnterpriseOid
- *
- * @brief Defines the default Enterprise Oid for this software package
- */
-class ASNMP_Export snmpTrapEnterpriseOid : public Oid
-{
- public:
- snmpTrapEnterpriseOid(void): Oid("1.3.6.1.6.3.1.1.4.3.0") { }
- SnmpSyntax& operator=( SnmpSyntax &val){ return Oid::operator=(val); }
-};
-
-/**
- * @class coldStartOid
- *
- * @brief Defines the RFC 1215 agent cold start generic trap (system reboot)
- */
-class ASNMP_Export coldStartOid : public snmpTrapsOid
-{
- public:
- coldStartOid( void){*this+=".1";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-/**
- * @class warmStartOid
- *
- * @brief Defines the RFC 1215 agent warm start generic trap (agent reboot)
- */
-class ASNMP_Export warmStartOid : public snmpTrapsOid
-{
- public:
- warmStartOid( void){*this+=".2";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-/**
- * @class linkDownOid
- *
- * @brief Defines the RFC 1215 interface (link) down trap
- */
-class ASNMP_Export linkDownOid : public snmpTrapsOid
-{
- public:
- linkDownOid( void){*this+=".3";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-
-// SMI LinkUp Oid
-/**
- * @class linkUpOid
- *
- * @brief Defines the RFC 1215 interface (link) up trap
- */
-class ASNMP_Export linkUpOid : public snmpTrapsOid
-{
- public:
- linkUpOid( void){*this+=".4";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-/**
- * @class authenticationFailureOid
- *
- * @brief Defines the RFC 1215 device/agent invalid access trap
- */
-class ASNMP_Export authenticationFailureOid : public snmpTrapsOid
-{
- public:
- authenticationFailureOid( void){*this+=".5";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-/**
- * @class egpNeighborLossOid
- *
- * @brief Defines the RFC 1215 Exterior Gateway Protocol neighbor loss trap
- */
-class ASNMP_Export egpNeighborLossOid : public snmpTrapsOid
-{
- public:
- egpNeighborLossOid( void){*this+=".6";}
- SnmpSyntax& operator=( SnmpSyntax &val){ return snmpTrapsOid::operator=(val); }
-};
-
-#ifdef DEFINE_TRAP_CONSTANTS_
-
-const coldStartOid coldStart;
-const warmStartOid warmStart;
-const linkDownOid linkDown;
-const linkUpOid linkUp;
-const authenticationFailureOid authenticationFailure;
-const egpNeighborLossOid egpNeighborLoss;
-const snmpTrapEnterpriseOid snmpTrapEnterprise;
-
-#endif
-
-#endif // ENTTRAPS_
diff --git a/ASNMP/asnmp/gauge.cpp b/ASNMP/asnmp/gauge.cpp
deleted file mode 100644
index 9051e2f83fb..00000000000
--- a/ASNMP/asnmp/gauge.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// gauge.cpp
-//
-// = DESCRIPTION
-// Class implemtation for SMI Gauge32 class.
-// NOTES: This does not behave exactly as a Gauge described in RFC 1155
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/gauge.h" // header file for gauge class
-
-ACE_RCSID(asnmp, gauge, "$Id$")
-
-// constructor with a value
-Gauge32::Gauge32( const unsigned long i):SnmpUInt32(i)
-{
- smival.syntax = sNMP_SYNTAX_GAUGE32;
-}
-
-// copy constructor
-Gauge32::Gauge32 ( const Gauge32 &g)
- : SnmpUInt32 (g)
-{ this->smival.value.uNumber = g.smival.value.uNumber;
- smival.syntax = sNMP_SYNTAX_GAUGE32;
- valid_flag = 1;
-}
-
-// destructor
-Gauge32::~Gauge32()
-{
-}
-
-// syntax type
-SmiUINT32 Gauge32::get_syntax()
-{
- return sNMP_SYNTAX_GAUGE32;
-}
-
-// overloaded assignment
-Gauge32& Gauge32::operator=( const Gauge32 &uli)
-{
- this->smival.value.uNumber = uli.smival.value.uNumber;
- return *this;
-}
-
-// overloaded assignment
-Gauge32& Gauge32::operator=( const unsigned long int i)
-{
- smival.value.uNumber=i; return *this;
-}
-
-// general assignment from any Value
-// TODO: this is broken if not inherited from UInt32 (see UInt32 code).
-SnmpSyntax& Gauge32::operator=( SnmpSyntax &in_val)
-{
-
- if ( this == &in_val ) // handle assignement from itself
- return *this;
-
- valid_flag = 0; // will get set true if really valid
- if (in_val.valid())
- {
- switch (in_val.get_syntax())
- {
- case sNMP_SYNTAX_UINT32:
- case sNMP_SYNTAX_GAUGE32:
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_INT32: // implied cast int -> uint
- this->smival.value.uNumber =
- ((Gauge32 &)in_val).smival.value.uNumber;
- valid_flag = 1;
- break;
- }
- }
- return *this;
-}
-
-// otherwise, act as unsigned long
-Gauge32::operator unsigned long()
-{
- return smival.value.uNumber;
-}
-
-// clone - create a new instance of this Value
-SnmpSyntax* Gauge32::clone() const
-{
- return ( SnmpSyntax *) new Gauge32(*this);
-}
diff --git a/ASNMP/asnmp/gauge.h b/ASNMP/asnmp/gauge.h
deleted file mode 100644
index 202edaf98bf..00000000000
--- a/ASNMP/asnmp/gauge.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*-C++-*- */
-#ifndef GAUGE_
-#define GAUGE_
-//=============================================================================
-/**
- * @file gauge.h
- *
- * $Id$
- *
- * Class definition for SMI Gauge32 class.
- * This class currently does not behave as defined by the abstract model
- * in RFC 1155 section 3.2.3.4 (ie the value doesn't latch on the max value)
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/integer.h"
-
-//------------[ Gauge32 Class ]------------------------------------------
-// The gauge class allows all the functionality of unsigned
-// integers but is recognized as a distinct SMI type. Gauge32
-// objects may be set or get into Vb objects.
-//
-
-/**
- * @class Gauge32:
- *
- * @brief Define RFC1902 Gauge datatype from RFC 1155 section 3.2.3.4
- * Note that this datatype does not behave exactly (acts like a long)
- */
-class ASNMP_Export Gauge32: public SnmpUInt32
-{
- public:
- /// constructor with a value
- Gauge32( const unsigned long i = 0);
-
- /// copy constructor
- Gauge32 ( const Gauge32 &g);
-
- /// destructor for a Gauge32 (ensure that Value::~Value() is overridden)
- ~Gauge32();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// overloaded assignment
- Gauge32& operator=( const Gauge32 &uli);
-
- /// overloaded assignment
- Gauge32& operator=( const unsigned long i);
-
- /// otherwise, behave like an unsigned int
- operator unsigned long();
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-};
-#endif //GAUGE_
diff --git a/ASNMP/asnmp/integer.cpp b/ASNMP/asnmp/integer.cpp
deleted file mode 100644
index d732e0f3ff9..00000000000
--- a/ASNMP/asnmp/integer.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// integer.cpp
-//
-// = DESCRIPTION
-// Class implemtation for SMI Integer classes.
-//
-// = AUTHOR
-// Jeff Meyer
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
-
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/integer.h" // header file for gauge class
-#include "ace/OS_NS_stdio.h"
-
-ACE_RCSID(asnmp, integer, "$Id$")
-
-// constructor with value
-SnmpUInt32::SnmpUInt32 (const unsigned long i)
-{
- smival.value.uNumber=i;
- smival.syntax = sNMP_SYNTAX_UINT32;
- valid_flag = 1;
-}
-
-// copy constructor
-SnmpUInt32::SnmpUInt32( const SnmpUInt32 &c)
- : SnmpSyntax (c)
-{
- smival.value.uNumber=c.smival.value.uNumber;
- smival.syntax = sNMP_SYNTAX_UINT32;
- valid_flag = 1;
-}
-
-// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
-SnmpUInt32::~SnmpUInt32()
-{
-}
-
-// syntax type
-SmiUINT32 SnmpUInt32::get_syntax()
-{
- return sNMP_SYNTAX_UINT32;
-}
-
-// object validity
-int SnmpUInt32::valid( void) const
-{
- return valid_flag;
-}
-
-// overloaded assignment
-SnmpUInt32& SnmpUInt32::operator=( const unsigned long int i)
-{
- smival.value.uNumber=i;
- valid_flag = 1;
- return *this;
-}
-
-// general assignment from any Value
-SnmpSyntax& SnmpUInt32::operator=( SnmpSyntax &in_val)
-{
- if ( this == &in_val ) // handle assignement from itself
- return *this;
-
- valid_flag = 0; // will get set true if really valid
- if (in_val.valid())
- {
- switch (in_val.get_syntax())
- {
- case sNMP_SYNTAX_UINT32:
- // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_INT32: // implied cast int -> uint
- this->smival.value.uNumber =
- ((SnmpUInt32 &)in_val).smival.value.uNumber;
- valid_flag = 1;
- break;
- }
- }
- return *this;
-}
-
-// overloaded assignment
-SnmpUInt32& SnmpUInt32::operator=( const SnmpUInt32 &uli)
-{
- this->smival.value.uNumber = uli.smival.value.uNumber; return *this;
-}
-
-// otherwise, behave like an unsigned long int
-SnmpUInt32::operator unsigned long()
-{
- return smival.value.uNumber;
-}
-
-// create a new instance of this Value
-SnmpSyntax* SnmpUInt32::clone() const
-{
- return (SnmpSyntax *) new SnmpUInt32(*this);
-}
-
-// ASCII format return
-const char * SnmpUInt32::to_string()
-{
- sprintf(output_buffer, "%d", (int) (this->smival.value.uNumber));
- return output_buffer;
-}
-
-
-//====================================================================
-// INT 32 Implementation
-//====================================================================
-
-// default constructor
-SnmpInt32::SnmpInt32 (const long i)
-{
- smival.value.sNumber=i;
- smival.syntax = sNMP_SYNTAX_INT32;
- valid_flag = 1;
-}
-
-// constructor with value
-SnmpInt32::SnmpInt32 (const SnmpInt32 &c)
- : SnmpSyntax (c)
-{
- smival.value.sNumber=c.smival.value.sNumber;
- smival.syntax = sNMP_SYNTAX_INT32;
- valid_flag = 1;
-}
-
-// destructor
-SnmpInt32::~SnmpInt32()
-{
-}
-
-// syntax type
-SmiUINT32 SnmpInt32::get_syntax()
-{
- return sNMP_SYNTAX_INT32;
-}
-
-// object validity
-int SnmpInt32::valid( void) const
-{
- return valid_flag;
-}
-
-// overloaded assignment
-SnmpInt32& SnmpInt32::operator=( const long i)
-{
- this->smival.value.sNumber = (unsigned long) i;
- valid_flag = 1;
- return *this;
-}
-
-// overloaded assignment
-SnmpInt32& SnmpInt32::operator=( const SnmpInt32 &uli)
-{
- this->smival.value.sNumber = uli.smival.value.sNumber;
- valid_flag = 1;
- return *this;
-}
-
-// general assignment from any Value
-SnmpSyntax& SnmpInt32::operator=( SnmpSyntax &in_val)
-{
- if ( this == &in_val ) // handle assignement from itself
- return *this;
-
- valid_flag = 0; // will get set true if really valid
- if (in_val.valid())
- {
- switch (in_val.get_syntax())
- {
- case sNMP_SYNTAX_INT32:
- case sNMP_SYNTAX_UINT32: // implied cast uint -> int
- // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32
- case sNMP_SYNTAX_CNTR32: // implied cast uint -> int
- case sNMP_SYNTAX_TIMETICKS: // implied cast uint -> int
- this->smival.value.sNumber =
- ((SnmpInt32 &)in_val).smival.value.sNumber;
- valid_flag = 1;
- break;
- }
- }
- return *this;
-}
-
-// otherwise, behave like a long int
-SnmpInt32::operator long()
-{
- return (long) smival.value.sNumber;
-}
-
-// clone - create a new instance of this Value
-SnmpSyntax* SnmpInt32::clone() const
-{
- return ( SnmpSyntax *) new SnmpInt32(*this);
-}
-
-// ASCII format return
-
-const char *SnmpInt32::to_string()
-{
- sprintf(output_buffer, "%d", (int) (long) this->smival.value.sNumber);
- return output_buffer;
-}
diff --git a/ASNMP/asnmp/integer.h b/ASNMP/asnmp/integer.h
deleted file mode 100644
index d120684c095..00000000000
--- a/ASNMP/asnmp/integer.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*-C++-*- */
-#ifndef SNMPINTEGER_
-#define SNMPINTEGER_
-//=============================================================================
-/**
- * @file integer.h
- *
- * $Id$
- *
- * Class definition for Integer classes convertable to SMI.
- *
- *
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/smival.h"
-
-// TODO get rid of this constant
-#define INTOUTBUF 15 // largest ASCII formatted integer
-
-//------------[ Integer Classes ]------------------------------------------
-// The integer class allows all the functionality of the various
-// integers but is contained in a Value object for consistency
-// among the various types.
-// class objects may be set or get into Vb objects.
-//
-
-// 32 bit unsigned integer class
-/**
- * @class SnmpUInt32
- *
- * @brief Implement RFC 1920 Unsigned Integer SMI datatype
- */
-class ASNMP_Export SnmpUInt32 : public SnmpSyntax
-{
-
- public:
- /// default constructor
- SnmpUInt32 (const unsigned long i = 0);
-
- /// copy constructor
- SnmpUInt32( const SnmpUInt32 &c);
-
- /// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
- virtual ~SnmpUInt32();
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// overloaded assignment
- SnmpUInt32& operator=( const unsigned long i);
-
- /// overloaded assignment
- SnmpUInt32& operator=( const SnmpUInt32 &uli);
-
- /// otherwise, behave like an unsigned long int
- operator unsigned long();
-
- /// get a printable ASCII value
- virtual const char *to_string();
-
- /// create a new instance of this Value
- virtual SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// did object construct properly
- int valid() const;
-
- protected:
- /// contain string representation of object
- int valid_flag;
- char output_buffer[INTOUTBUF];
-};
-
-
-// 32 bit signed integer class
- /**
- * @class SnmpInt32
- *
- * @brief Implement RFC 1902 32 bit Integer SMI data object
- */
-class ASNMP_Export SnmpInt32 : public SnmpSyntax
-{
- public:
- /// constructor with value
- SnmpInt32 (const long i = 0);
-
- /// constructor with value
- SnmpInt32 (const SnmpInt32 &c);
-
- /// destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
- virtual ~SnmpInt32();
-
- /// syntax type
- virtual SmiUINT32 get_syntax();
-
- /// overloaded assignment
- SnmpInt32& operator=( const long i);
-
- /// overloaded assignment
- SnmpInt32& operator=( const SnmpInt32 &li);
-
- /// otherwise, behave like a long int
- operator long();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
- /// get a printable ASCII value
- const char *to_string();
-
- /// logical state of object
- int valid() const;
-
- protected:
- /// contain string representation of object
- int valid_flag;
- char output_buffer[INTOUTBUF];
-};
-
-#endif
diff --git a/ASNMP/asnmp/octet.cpp b/ASNMP/asnmp/octet.cpp
deleted file mode 100644
index 885197919c4..00000000000
--- a/ASNMP/asnmp/octet.cpp
+++ /dev/null
@@ -1,594 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// octet.cpp
-//
-// = DESCRIPTION
-// Implements the SMI Octet datatype (RFC 1155)
-// This class is fully contained and does not rely on or any other
-// SNMP libraries. Ported to ACE by Michael MacFaden mrm@cisco.com
-//
-// = AUTHOR
-// Peter E Mellquist
-//
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/octet.h" // include definition for octet class
-#include "ace/OS_Memory.h"
-#include "ace/OS_NS_string.h"
-#include "ace/OS_NS_stdio.h"
-#include "ace/OS_NS_ctype.h"
-#include "ace/os_include/os_ctype.h"
-
-ACE_RCSID(asnmp, octet, "$Id$")
-
-//============[ syntax type ]=========================================
-SmiUINT32 OctetStr::get_syntax()
-{
- return sNMP_SYNTAX_OCTETS;
-}
-
-inline
-void init_octet_smi(SmiVALUE& smi)
-{
- smi.syntax = sNMP_SYNTAX_OCTETS;
- smi.value.string.ptr = 0;
- smi.value.string.len = 0;
-}
-
-inline
-void reset_octet_smi(SmiVALUE& smi)
-{
- delete [] smi.value.string.ptr;
- smi.value.string.ptr = 0;
- smi.value.string.len = 0;
-}
-
-inline
-int copy_octet_smi(SmiVALUE& smi, int size, const char *src, int& valid_flag)
-{
- valid_flag = 0;
-
- if (smi.value.string.ptr)
- delete [] smi.value.string.ptr;
-
- ACE_NEW_RETURN(smi.value.string.ptr, SmiBYTE[size], 1);
- ACE_OS::memcpy( smi.value.string.ptr, src, size);
- smi.value.string.len = size;
- valid_flag = 1;
- return 0;
-}
-
-//============[ default constructor ]=========================
-OctetStr::OctetStr( const char * string, long size):
- output_buffer(0), validity(0)
-{
-
- init_octet_smi(smival);
-
- // check for null string
- if ( !string)
- return;
-
- if (size == -1) // calc if no length given - assume c style string
- size = ACE_OS::strlen( string);
-
- copy_octet_smi(smival, size, string, validity);
-}
-
-
-//============[ set the data on an already constructed Octet ]============
-// TODO: should return status since it can fail in so many places
-void OctetStr::set_data( const SmiBYTE* string, long size)
-{
- // invalid args, set octetStr to not valid
- if ( !string || !size) {
- validity = 0;
- return;
- }
-
- // assume non-zero terminated string
- if (size == -1) // calc if no length given - assume c style string
- size = ACE_OS::strlen( (char *)string);
-
- // free up already used space
- if ( smival.value.string.ptr ) {
- reset_octet_smi(smival);
- }
- smival.value.string.len = 0;
-
-
- copy_octet_smi(smival, size, (const char *)string, validity);
-}
-
-//============[ constructor using another octet object ]==============
-OctetStr::OctetStr ( const OctetStr &octet):
- SnmpSyntax (octet), output_buffer(0), validity(1)
-{
- init_octet_smi(smival);
- // check for zero len case
- if ( octet.smival.value.string.len == 0) {
- return;
- }
-
- // must be a valid object
- if ( octet.validity == 0) {
- validity = 0;
- return;
- }
-
- // get the mem needed
- copy_octet_smi(smival, octet.smival.value.string.len,
- (const char *)octet.smival.value.string.ptr, validity);
-}
-
-//=============[ destructor ]=========================================
-OctetStr::~OctetStr()
-{
- reset_octet_smi(smival);
- delete [] output_buffer;
-}
-
-
-//=============[ assignment to a string operator overloaded ]=========
-OctetStr& OctetStr::operator=( const char *string)
-{
- // get the string size
- size_t nz;
-
- // free up previous memory if needed
- if ( smival.value.string.ptr ) {
- reset_octet_smi(smival);
- }
-
- // if empty then we are done
- if (!string || !(nz = ACE_OS::strlen( string))) {
- validity = 1;
- return *this;
- }
-
- // get memory needed
- copy_octet_smi(smival, nz, string, validity);
- return *this;
-}
-
-//=============[ assignment to another oid object overloaded ]========
-OctetStr& OctetStr::operator=( const OctetStr &octet)
-{
- // protect against assignment from self
- if ( this == &octet )
- return *this;
-
- // don't assign from invalid objs
- if (!octet.validity) {
- return *this;
- }
-
- // free up previous memory if needed
- if ( smival.value.string.len ) {
- reset_octet_smi(smival);
- }
-
- if (!octet.smival.value.string.len) {
- validity = 1;
- return *this;
- }
-
- // get some memory
- copy_octet_smi(smival, octet.smival.value.string.len,
- (const char*) octet.smival.value.string.ptr, validity);
- return *this; // return self reference
-}
-
-//==============[ equivlence operator overloaded ]====================
-bool operator==( const OctetStr &lhs, const OctetStr &rhs)
-{
- if( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0)
- return true;
- else
- return false;
-}
-
-//==============[ not equivlence operator overloaded ]================
-bool operator!=( const OctetStr &lhs, const OctetStr &rhs)
-{
- if( lhs.left_comparison( rhs.smival.value.string.len, rhs)!=0)
- return true;
- else
- return false;
-}
-
-//==============[ less than < overloaded ]============================
-bool operator<( const OctetStr &lhs, const OctetStr &rhs)
-{
- if( lhs.left_comparison( rhs.smival.value.string.len, rhs)<0)
- return true;
- else
- return false;
-}
-
-//==============[ less than <= overloaded ]===========================
-bool operator<=( const OctetStr &lhs, const OctetStr &rhs)
-{
- if(( lhs.left_comparison( rhs.smival.value.string.len, rhs)<0) ||
- ( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0))
- return true;
- else
- return false;
-}
-
-//===============[ greater than > overloaded ]========================
-bool operator>( const OctetStr &lhs, const OctetStr &rhs)
-{
- if( lhs.left_comparison( rhs.smival.value.string.len, rhs)>0)
- return true;
- else
- return false;
-}
-
-//===============[ greater than >= overloaded ]=======================
-bool operator>=( const OctetStr &lhs, const OctetStr &rhs)
-{
- if(( lhs.left_comparison( rhs.smival.value.string.len, rhs)>0) ||
- ( lhs.left_comparison( rhs.smival.value.string.len, rhs)==0))
- return true;
- else
- return false;
-}
-
-//===============[ equivlence operator overloaded ]===================
-bool operator==( const OctetStr &lhs,const char *rhs)
-{
- OctetStr to( rhs);
- if( lhs.left_comparison( to.smival.value.string.len,to)==0)
- return true;
- else
- return false;
-}
-
-//===============[ not equivlence operator overloaded ]===============
-bool operator!=( const OctetStr &lhs,const char *rhs)
-{
- OctetStr to( rhs);
- if ( lhs.left_comparison( to.smival.value.string.len,to)!=0)
- return true;
- else
- return false;
-}
-
-//===============[ less than < operator overloaded ]==================
-bool operator<( const OctetStr &lhs,const char *rhs)
-{
- OctetStr to( rhs);
- if ( lhs.left_comparison( to.smival.value.string.len,to)<0)
- return true;
- else
- return false;
-}
-
-//===============[ less than <= operator overloaded ]=================
-bool operator<=( const OctetStr &lhs,char *rhs)
-{
- OctetStr to( rhs);
- if (( lhs.left_comparison( to.smival.value.string.len,to)<0) ||
- ( lhs.left_comparison( to.smival.value.string.len,to)==0))
- return true;
- else
- return false;
-}
-
-//===============[ greater than > operator overloaded ]===============
-bool operator>( const OctetStr &lhs,const char *rhs)
-{
- OctetStr to( rhs);
- if ( lhs.left_comparison( to.smival.value.string.len,to)>0)
- return true;
- else
- return false;
-}
-
-//===============[ greater than >= operator overloaded ]==============
-bool operator>=( const OctetStr &lhs,const char *rhs)
-{
- OctetStr to( rhs);
- if (( lhs.left_comparison( to.smival.value.string.len,to)>0) ||
- ( lhs.left_comparison( to.smival.value.string.len,to)==0))
- return true;
- else
- return false;
-}
-
-//===============[ append operator, appends a string ]================
-OctetStr& OctetStr::operator+=( const char *a)
-{
- SmiBYTE *tmp; // temp pointer
- size_t slen,nlen;
-
- // get len of string
- if ( !a || ((slen = ACE_OS::strlen( a)) == 0))
- return *this;
-
- // total len of octet
- nlen = slen + (size_t) smival.value.string.len;
- ACE_NEW_RETURN(tmp, SmiBYTE [ nlen], *this);
- ACE_OS::memcpy ( tmp, smival.value.string.ptr,
- (size_t) smival.value.string.len);
- ACE_OS::memcpy( tmp + smival.value.string.len, a, (size_t) slen);
- // delete the original
- if ( smival.value.string.ptr )
- reset_octet_smi(smival);
- smival.value.string.ptr = tmp;
- smival.value.string.len = nlen;
- return *this;
-}
-
-//================[ append one OctetStr to another ]==================
-OctetStr& OctetStr::operator+=( const OctetStr& octetstr)
-{
- SmiBYTE *tmp; // temp pointer
- size_t slen,nlen;
-
- if (!octetstr.validity ||
- !(slen = (size_t)octetstr.length()))
- return *this;
-
- // total len of octet
- nlen = slen + (size_t) smival.value.string.len;
- // get mem needed
- ACE_NEW_RETURN(tmp, SmiBYTE[ nlen], *this);
- ACE_OS::memcpy ( tmp, smival.value.string.ptr,
- (size_t) smival.value.string.len);
- ACE_OS::memcpy( tmp + smival.value.string.len, octetstr.data(),
- (size_t) slen);
- if ( smival.value.string.ptr )
- reset_octet_smi(smival);
- smival.value.string.ptr = tmp;
- smival.value.string.len = nlen;
- return *this;
-}
-
-//================[ appends an int ]==================================
-OctetStr& OctetStr::operator+=( const char c)
-{
- SmiBYTE *tmp;
- // get the memory needed plus one extra byte
- ACE_NEW_RETURN(tmp, SmiBYTE[ smival.value.string.len + 1], *this);
- ACE_OS::memcpy ( tmp, smival.value.string.ptr,
- (size_t) smival.value.string.len); // len of original
- tmp[ smival.value.string.len ] = c; // assign in byte
- if ( smival.value.string.ptr ) // delete the original
- reset_octet_smi(smival);
-
- smival.value.string.ptr = tmp; // point to one
- smival.value.string.len++; // up the len
- return *this;
-}
-
-
-//================[ compare n elements of an Octet ]==================
-int OctetStr::left_comparison( const long n, const OctetStr &o) const
-{
- long z, w;
-
- // both are empty, they are equal
- if (( smival.value.string.len == 0) &&
- ( o.smival.value.string.len == 0))
- return 0; // equal
-
- // self is empty and param has something
- if (( smival.value.string.len == 0) &&
- ( o.smival.value.string.len >0) &&
- (n>0))
- return -1;
-
- // self has something and param has nothing
- if (( smival.value.string.len > 0) &&
- ( o.smival.value.string.len ==0) &&
- (n>0))
- return 1;
-
- // special case
- if (( smival.value.string.len == 0) &&
- ( o.smival.value.string.len > 0) &&
- ( n == 0))
- return 0;
-
- // pick the Min of n, this and the param len
- // this is the maximum # to iterate a search
- w = smival.value.string.len < o.smival.value.string.len
- ? smival.value.string.len : o.smival.value.string.len;
- if (n<w) w=n;
-
- z = 0;
- while( z < w) {
- if ( smival.value.string.ptr[z] < o.smival.value.string.ptr[z])
- return -1; // less than
- if ( smival.value.string.ptr[z] > o.smival.value.string.ptr[z])
- return 1; // greater than
- z++;
- }
-
- if (( z == 0) &&
- ( smival.value.string.len == 0) &&
- ( o.smival.value.string.len > 0))
- return -1;
-
- if (( z == 0) &&
- ( o.smival.value.string.len == 0) &&
- ( smival.value.string.len > 0))
- return 1;
-
- return 0;
-}
-
-//================[ return the length of the oid ]=======================
-size_t OctetStr::length() const
-{
- return (size_t) smival.value.string.len;
-}
-
-//================[ operator[]: access as if array ]==================
-SmiBYTE& OctetStr::operator[]( int position)
-{
- return smival.value.string.ptr[position];
-}
-
-//===============[ reuturns pointer to internal data ]===============
-SmiBYTE * OctetStr::data() const
-{
- return smival.value.string.ptr;
-}
-
-//================[ returns validity ]================================
-int OctetStr::valid() const
-{
- return validity;
-}
-
-//================[ clone() ]=========================================
-SnmpSyntax * OctetStr::clone() const
-{
- OctetStr *tmp = new OctetStr(*this);
- return ( SnmpSyntax *) tmp;
-}
-
-//================[ ASCII format return ]=============================
-const char * OctetStr::to_string()
-{
- for ( unsigned long i=0; i < smival.value.string.len; i++) {
- if (( smival.value.string.ptr[i] != '\r')&&
- ( smival.value.string.ptr[i] != '\n')&&
- (ACE_OS::ace_isprint((int) (smival.value.string.ptr[i]))==0))
- return(to_string_hex());
- }
-
- if ( output_buffer != 0)
- delete [] output_buffer;
-
- ACE_NEW_RETURN(output_buffer, char[smival.value.string.len + 1], "");
- if (smival.value.string.len)
- ACE_OS::memcpy(output_buffer, smival.value.string.ptr,
- (int) smival.value.string.len);
- output_buffer[smival.value.string.len] = '\0';
- return output_buffer;
-}
-
-
-//================[ general Value = operator ]========================
-SnmpSyntax& OctetStr::operator=( SnmpSyntax &val)
-{
- // protect against assignment from self
- if ( this == &val )
- return *this;
-
- // blow away the old value
- validity=0;
- if (smival.value.string.ptr) {
- reset_octet_smi(smival);
- }
- smival.value.string.len = 0;
- if (val.valid()){
- switch (val.get_syntax()) {
- case sNMP_SYNTAX_OCTETS:
- case sNMP_SYNTAX_IPADDR:
- set_data( ((OctetStr &)val).smival.value.string.ptr,
- ((OctetStr &)val).smival.value.string.len);
- break;
- }
- }
- return *this;
-}
-
-//================[ format the output into hex ]========================
-const char *OctetStr::to_string_hex()
-{
- int cnt;
- char char_buf[80]; // holds ASCII representation of data
- char *buf_ptr; // pointer into ASCII listing
- char *line_ptr; // pointer into Hex listing
- int storageNeeded; // how much space do we need ?
- int local_len = (int) smival.value.string.len;
- SmiBYTE *bytes = smival.value.string.ptr;
-
-
- storageNeeded = (int) ((smival.value.string.len/16)+1) * 72 + 1;
-
- if ( output_buffer != 0)
- delete [] output_buffer;
-
- ACE_NEW_RETURN(output_buffer, char[storageNeeded], "");
-
- line_ptr = output_buffer;
-
- /*----------------------------------------*/
- /* processing loop for entire data buffer */
- /*----------------------------------------*/
- while (local_len > 0) {
- cnt = 16; /* print 16 bytes per line */
- buf_ptr = char_buf;
- sprintf(line_ptr, " ");
- line_ptr += 2; /* indent */
-
- /*-----------------------*/
- /* process a single line */
- /*-----------------------*/
- while (cnt-- > 0 && local_len-- > 0) {
- sprintf(line_ptr, "%2.2X ", *bytes);
-
- line_ptr +=3; /* the display of a byte always 3 chars long */
- if (isprint(*bytes))
- sprintf(buf_ptr, "%c", *bytes);
- else
- sprintf(buf_ptr, ".");
- bytes++;
- buf_ptr++;
- }
- cnt++;
-
- /*----------------------------------------------------------*/
- /* this is to make sure that the ASCII displays line up for */
- /* incomplete lines of hex */
- /*----------------------------------------------------------*/
- while (cnt-- > 0) {
- sprintf(line_ptr," ");
- line_ptr += 3;
- }
-
- /*------------------------------------------*/
- /* append the ASCII display to the Hex line */
- /*------------------------------------------*/
-
-// TODO: verify ACE_OS:: on NT works like this or not
-
-#if defined(_WIN32)
- const char *fmt = " %s\r\n";
-#else
- const char *fmt = " %s\n";
-#endif // _WIN32
-
- ACE_OS::sprintf(line_ptr, fmt, char_buf);
- line_ptr += 3 + ACE_OS::strlen(char_buf);
- }
-
- return output_buffer;
-}
diff --git a/ASNMP/asnmp/octet.h b/ASNMP/asnmp/octet.h
deleted file mode 100644
index 5e8c8d63d98..00000000000
--- a/ASNMP/asnmp/octet.h
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-#ifndef OCTET_CLS_
-#define OCTET_CLS_
-//=============================================================================
-/**
- * @file octet.h
- *
- * $Id$
- *
- * This class is fully contained and does not rely on or any other
- * SNMP libraries. This class is portable across any platform
- * which supports C++.
- *
- *
- * @author Peter E Mellquist / design/original code Michael R. MacFaden / modified for ACE
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//------------------------------------------------------------------------
-#include "asnmp/smival.h"
-
-/**
- * @class OctetStr
- *
- * @brief Implement RFC1155 Octet SMI data object
- */
-class ASNMP_Export OctetStr : public SnmpSyntax
-
-{
-public:
- /// construct octet from byte buffer, assume c style string if size == -1
- OctetStr( const char *string = "", long size = -1);
-
- /// constructor using another octet object
- OctetStr ( const OctetStr &octet);
-
- /// destructor
- ~OctetStr();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// set octet from byte buffer, assume c style string if size == -1
- void set_data( const SmiBYTE* string, long int size = -1);
-
- /// assignment to a string operator overloaded
- OctetStr& operator=( const char *string);
-
- /// assignment to another oid object overloaded
- OctetStr& operator=( const OctetStr &octet);
-
- /// equivlence operator overloaded
- friend ASNMP_Export bool operator==( const OctetStr &lhs, const OctetStr &rhs);
-
- /// not equivlence operator overloaded
- friend ASNMP_Export bool operator!=( const OctetStr &lhs, const OctetStr &rhs);
-
- /// less than < overloaded
- friend ASNMP_Export bool operator<( const OctetStr &lhs, const OctetStr &rhs);
-
- /// less than <= overloaded
- friend ASNMP_Export bool operator<=( const OctetStr &lhs,const OctetStr &rhs);
-
- /// greater than > overloaded
- friend ASNMP_Export bool operator>( const OctetStr &lhs, const OctetStr &rhs);
-
- /// greater than >= overloaded
- friend ASNMP_Export bool operator>=( const OctetStr &lhs, const OctetStr &rhs);
-
- /// equivlence operator overloaded
- friend ASNMP_Export bool operator==( const OctetStr &lhs,const char *rhs);
-
- /// not equivlence operator overloaded
- friend ASNMP_Export bool operator!=( const OctetStr &lhs,const char *rhs);
-
- /// less than < operator overloaded
- friend ASNMP_Export bool operator<( const OctetStr &lhs,const char *rhs);
-
- /// less than <= operator overloaded
- friend ASNMP_Export bool operator<=( const OctetStr &lhs,char *rhs);
-
- /// greater than > operator overloaded
- friend ASNMP_Export bool operator>( const OctetStr &lhs,const char *rhs);
-
- /// greater than >= operator overloaded
- friend ASNMP_Export bool operator>=( const OctetStr &lhs,const char *rhs);
-
- /// append operator, appends a string
- OctetStr& operator+=( const char *a);
-
- /// appends an int
- OctetStr& operator+=( const char c);
-
- /// append one octetStr to another
- OctetStr& operator+=( const OctetStr& octetstr);
-
- /// for non const [], allows reading and writing
- SmiBYTE& operator[]( int position);
-
- /**
- * compare the n leftmost bytes (left-to-right)
- * returns 0, equal
- * returns -1, <
- * returns 1 , >
- */
- int left_comparison( const long n, const OctetStr &o) const;
-
- /// return the len of the oid
- size_t length() const ;
-
- /// returns validity
- int valid() const;
-
- /// returns pointer to internal data
- SmiBYTE *data() const;
-
- /// get a printable ASCII value
- const char *to_string();
-
- /// get an ASCII formattted hex dump of the contents
- const char *to_string_hex();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
-protected:
- //----[ instance variables ]
- char *output_buffer; // formatted Octet value
- int validity; // validity boolean
-};
-
-#endif // OCTET_CLS_
diff --git a/ASNMP/asnmp/oid.cpp b/ASNMP/asnmp/oid.cpp
deleted file mode 100644
index b5999a1fcbd..00000000000
--- a/ASNMP/asnmp/oid.cpp
+++ /dev/null
@@ -1,803 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// oid.cpp
-//
-// = DESCRIPTION
-// This module contains the implementation of the oid class. This
-// includes all protected and public member functions. The oid class
-// may be compiled stand alone without the use of any other library.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS" without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//---------[ external C libaries used ]--------------------------------
-
-#include "asnmp/oid.h" // include def for oid class
-#include "ace/OS_NS_string.h"
-#include "ace/OS_NS_stdio.h"
-#include "ace/OS_Memory.h"
-#include "ace/os_include/os_ctype.h"
-
-ACE_RCSID(asnmp, oid, "$Id$")
-
-enum Defs {SNMPBUFFSIZE=300,
- SNMPCHARSIZE=15}; // max oid value (4294967295UL)
-
-#define NO_MEM_STR "ERROR: Oid::to_string: memory allocation failure"
-
-//=============[Oid::get_syntax(void)]====================================
-SmiUINT32 Oid::get_syntax()
-{
- return sNMP_SYNTAX_OID;
-}
-
-
-//=============[Oid::Oid( const char *dotted_string ]=====================
-// constructor using a dotted string
-//
-// do a string to oid using the string passed in
-Oid::Oid( const char * dotted_oid_string, size_t size)
-{
- // can't init enum SmiValue so just memset it clean
- set_null();
-
- size_t z;
- if ((z = ACE_OS::strlen(dotted_oid_string)) == 0) {
- set_invalid();
- return;
- }
-
- if (size == (unsigned int)-1)
- size = z;
- if (size > z)
- size = z;
-
- char *ptr = (char *)dotted_oid_string;;
- if (size < z) {
- // create new buffer if needed
- ACE_NEW(ptr, char [size]);
-
- // sz should be in StrToOid?
- ACE_OS::memcpy( (void *)ptr, dotted_oid_string, size);
- }
-
- size_t byte_counter;
- if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0)
- set_invalid();
- if (ptr != dotted_oid_string)
- delete [] ptr;
-}
-
-
-//=============[Oid::Oid( const Oid &oid) ]================================
-// constructor using another oid object
-//
-// do an oid copy using the oid object passed in
-Oid::Oid ( const Oid &oid)
- : SnmpSyntax (oid)
-{
- set_null();
-
- // allocate some memory for the oid
- // in this case the size to allocate is the same
- // size as the source oid
- if (oid.smival.value.oid.len) {
- ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid.smival.value.oid.len]);
- size_t byte_counter;
- OidCopy( (SmiLPOID) &(oid.smival.value.oid),(SmiLPOID)
- &smival.value.oid, byte_counter);
- }
-}
-
-
-//=============[Oid::Oid( const unsigned long *raw_oid, int oid_len) ]====
-// constructor using raw numeric form
-//
-// copy the integer values into the private member
-Oid::Oid(const unsigned long *raw_oid, size_t oid_len)
-{
- set_null();
-
- smival.syntax = sNMP_SYNTAX_OID;
- set_invalid();
-
- if (raw_oid && oid_len > 0) {
- ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid_len]);
- smival.value.oid.len = oid_len;
- for (size_t i=0; i < oid_len; i++)
- smival.value.oid.ptr[i] = raw_oid[i];
- }
-}
-
-//=============[Oid::~Oid]==============================================
-// destructor
-//
-// free up the descriptor space
-Oid::~Oid()
-{
- // free up the octet deep memory
- if ( smival.value.oid.ptr ) {
- set_invalid();
- }
-
- // free up the output string
- if ( iv_str != 0)
- delete [] iv_str;
-}
-
-
-//=============[Oid::operator = const char * dotted_string ]==============
-// assignment to a string operator overloaded
-//
-// free the existing oid
-// create the new oid from the string
-// return this object
-void Oid::set_data( const char *dotted_oid_string)
-{
- // delete the old value
- if ( smival.value.oid.ptr ) {
- set_invalid();
- }
-
- // assign the new value
- size_t byte_counter;
- if (StrToOid( (char *) dotted_oid_string, &smival.value.oid, byte_counter) <0)
- set_invalid();
-}
-
-
-//=============[Oid:: operator = const Oid &oid ]==========================
-// assignment to another oid object overloaded
-//
-// free the existing oid
-// create a new one from the object passed in
-// TODO: measure perf vs memory of no realloc in case where len >= oid.len
-Oid& Oid::operator=( const Oid &oid)
-{
- // protect against assignment from self
- if ( this == &oid)
- return *this;
-
- set_invalid();
-
- // check for zero len on source
- if ( oid.smival.value.oid.len == 0)
- return *this;
-
- const SmiLPOID srcOid = (SmiLPOID) &(oid.smival.value.oid);
- init_value(srcOid, oid.smival.value.oid.len);
- return *this;
-}
-
-// assign this object the oid, set to invalid if copy fails
-void Oid::init_value(const SmiLPOID srcOid, size_t len)
-{
- // allocate some memory for the oid
- ACE_NEW(smival.value.oid.ptr, SmiUINT32[ len]);
- size_t byte_counter;
- OidCopy( srcOid, (SmiLPOID) &smival.value.oid, byte_counter);
-}
-
-void Oid::init_value(const unsigned long *raw_oid, size_t oid_len)
-{
- if (smival.value.oid.ptr)
- delete [] smival.value.oid.ptr;
-
- ACE_NEW(smival.value.oid.ptr, SmiUINT32[ oid_len]);
- ACE_OS::memcpy((SmiLPBYTE) smival.value.oid.ptr,
- (SmiLPBYTE) raw_oid,
- (size_t) (oid_len * sizeof(SmiUINT32)));
- smival.value.oid.len = oid_len;
-}
-
-//==============[Oid:: operator += const char *a ]=========================
-// append operator, appends a string
-//
-// allocate some space for a max oid string
-// extract current string into space
-// concat new string
-// free up existing oid
-// make a new oid from string
-// delete allocated space
-Oid& Oid::operator+=( const char *a)
-{
- unsigned long n;
-
- if (!a)
- return *this;
-
- if ( *a=='.')
- a++;
- size_t sz = ACE_OS::strlen(a);
-
- if (valid()) {
- n = (smival.value.oid.len *SNMPCHARSIZE) + smival.value.oid.len + 1 + sz;
- char *ptr;
- ACE_NEW_RETURN(ptr, char[ n], *this);
- size_t byte_counter;
- if (OidToStr(&smival.value.oid, n,ptr, byte_counter) > 0) {
- delete [] ptr;
- set_invalid();
- return *this;
- }
-
- if (ACE_OS::strlen(ptr))
- ACE_OS::strcat(ptr,".");
- ACE_OS::strcat(ptr,a);
- if ( smival.value.oid.len !=0) {
- set_invalid();
- }
-
- if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0) {
- set_invalid();
- }
- delete [] ptr;
- }
- else {
- size_t byte_counter;
- if (StrToOid( (char *) a, &smival.value.oid, byte_counter) < 0) {
- set_invalid();
- }
- }
-
- return *this;
-}
-
-//=============[ bool operator == oid,oid ]=================================
-// equivlence operator overloaded
-bool operator==( const Oid &lhs, const Oid &rhs)
-{
- // ensure same len, then use left_comparison
- if (rhs.length() != lhs.length())
- return false;
- if( lhs.left_comparison( rhs.length(), rhs) == 0)
- return true;
- else
- return false;
-}
-
-//==============[ bool operator!=( Oid &x,Oid &y) ]=======================
-//not equivlence operator overloaded
-bool operator!=( const Oid &lhs,const Oid &rhs)
-{
- return (!(lhs == rhs));
-}
-
-//==============[ bool operator<( Oid &x,Oid &y) ]========================
-// less than < overloaded
-bool operator<( const Oid &lhs,const Oid &rhs)
-{
- int result;
-
- // call left_comparison with the current
- // Oidx, Oidy and len of Oidx
- if ((result = lhs.left_comparison( rhs.length(), rhs)) < 0)
- return true;
- else if (result > 0)
- return false;
-
- else{
- // if here, equivalent substrings, call the shorter one <
- if (lhs.length() < rhs.length())
- return true;
- else
- return false;
- }
-}
-
-//==============[ bool operator<=( Oid &x,Oid &y) ]=======================
-// less than <= overloaded
-bool operator<=( const Oid &x,const Oid &y)
-{
- if ( (x < y) || (x == y) )
- return true;
- else
- return false;
-}
-
-//==============[ bool operator>( Oid &x,Oid &y) ]========================
-// greater than > overloaded
-bool operator>( const Oid &x,const Oid &y)
-{
- // just invert existing <=
- if (!(x<=y))
- return true;
- else
- return false;
-}
-
-//==============[ bool operator>=( Oid &x,Oid &y) ]=======================
-// greater than >= overloaded
-bool operator>=( const Oid &x,const Oid &y)
-{
- // just invert existing <
- if (!(x<y))
- return true;
- else
- return false;
-}
-
-//===============[Oid::oidval ]=============================================
-// return the WinSnmp oid part
-SmiLPOID Oid::oidval()
-{
- return (SmiLPOID) &smival.value.oid;
-}
-
-//===============[Oid::set_data ]==---=====================================
-// copy data from raw form...
-void Oid::set_data( const unsigned long *raw_oid, const size_t oid_len)
-{
- if (smival.value.oid.len < oid_len) {
- if ( smival.value.oid.ptr) {
- set_invalid();
- }
- }
- init_value(raw_oid, oid_len);
-}
-
-
-//===============[Oid::len ]================================================
-// return the len of the oid
-size_t Oid::length() const
-{
- return smival.value.oid.len;
-}
-
-//===============[Oid::trim( unsigned int) ]============================
-// trim off the n leftmost values of an oid
-// Note!, does not adjust actual space for
-// speed
-void Oid::trim( const size_t n)
-{
- // verify that n is legal
- if ((n<=smival.value.oid.len)&&(n>0)) {
- smival.value.oid.len -= n;
-
- if (smival.value.oid.len == 0) {
- set_invalid();
- }
- }
-}
-
-//===============[Oid::set_invalid() ]====================
-// make this object invalid by resetting all values
-void Oid::set_invalid() {
- delete [] smival.value.oid.ptr;
- smival.value.oid.ptr = 0;
- smival.value.oid.len = 0;
- delete [] iv_str;
- iv_str = 0;
-}
-
-//===============[Oid::set_null() ]====================
-void Oid::set_null() {
- smival.syntax = sNMP_SYNTAX_OID;
- smival.value.oid.ptr = 0;
- smival.value.oid.len = 0;
- iv_str = 0;
-}
-
-//===============[Oid::operator += const unsigned int) ]====================
-// append operator, appends an int
-//
-// allocate some space for a max oid string
-// extract current string into space
-// concat new string
-// free up existing oid
-// make a new oid from string
-// delete allocated space
-Oid& Oid::operator+=( const unsigned long i)
-{
- unsigned long n = (smival.value.oid.len * SNMPCHARSIZE)
- + ( smival.value.oid.len -1) + 1 + 4;
- char buffer[SNMPBUFFSIZE];
-
- // two cases: null oid, existing oid
- if (valid()) {
- // allocate some temporary space
- char *ptr;
- ACE_NEW_RETURN(ptr, char[ n], *this);
- size_t byte_counter;
- if (OidToStr(&smival.value.oid, n, ptr, byte_counter) < 0) {
- set_invalid();
- delete [] ptr;
- return *this;
- }
-
- if (ACE_OS::strlen(ptr))
- ACE_OS::strcat(ptr,".");
-
- if (ACE_OS::sprintf( buffer,"%lu",i) != -1) {
- ACE_OS::strcat(ptr, buffer);
- if ( smival.value.oid.ptr ) {
- set_invalid();
- }
- if (StrToOid( (char *) ptr, &smival.value.oid, byte_counter) < 0) {
- set_invalid();
- }
- delete [] ptr;
- }
- }
- else {
- init_value((const unsigned long *)&i, (size_t)1);
- }
-
- return *this;
-}
-
-//===============[Oid::operator += const Oid) ]========================
-// append operator, appends an Oid
-//
-// allocate some space for a max oid string
-// extract current string into space
-// concat new string
-// free up existing oid
-// make a new oid from string
-// delete allocated space
-Oid& Oid::operator+=( const Oid &o)
-{
- SmiLPUINT32 new_oid;
-
- if (o.smival.value.oid.len == 0)
- return *this;
-
- ACE_NEW_RETURN(new_oid,
- SmiUINT32[ smival.value.oid.len + o.smival.value.oid.len], *this);
- if (smival.value.oid.ptr) {
- ACE_OS::memcpy((SmiLPBYTE) new_oid,
- (SmiLPBYTE) smival.value.oid.ptr,
- (size_t) (smival.value.oid.len*sizeof(SmiUINT32)));
-
- delete [] smival.value.oid.ptr;
- }
-
- // out with the old, in with the new...
- smival.value.oid.ptr = new_oid;
-
- ACE_OS::memcpy((SmiLPBYTE) &new_oid[smival.value.oid.len],
- (SmiLPBYTE) o.smival.value.oid.ptr,
- (size_t) (o.smival.value.oid.len*sizeof(SmiUINT32)));
-
- smival.value.oid.len += o.smival.value.oid.len;
- return *this;
-}
-
-// return string portion of the oid
-//
-const char * Oid::to_string()
-{
- unsigned long n;
- if (!valid())
- return ""; // be consistent with other classes
-
- // the worst case char len of an oid can be..
- // oid.len*3 + dots in between if each oid is XXXX
- // so.. size = (len*4) + (len-1) + 1 , extra for a null
-
- n = (smival.value.oid.len *SNMPCHARSIZE) + ( smival.value.oid.len -1) + 1 ;
- if (n == 0)
- n = 1; // need at least 1 byte for a null string
-
- // adjust the len of output array in case size was adjusted
- if ( iv_str != 0)
- delete [] iv_str;
- // allocate some space for the output string
- ACE_NEW_RETURN(iv_str, char[ n], "");
-
- // convert to an output string
- size_t how_many;
- if ( valid() && iv_str != 0)
- if (OidToStr(&smival.value.oid,n,iv_str, how_many) < 0)
- return "ERROR: Oid::OidToStr failed";
- return iv_str;
-}
-
-//==============[Oid::suboid( unsigned int start, n) ]=============
-int Oid::suboid(Oid& new_oid, size_t start, size_t how_many)
-{
- if (how_many == 0)
- return 0;
- else
- if (how_many == (size_t)-1)
- how_many = length();
- else
- if (how_many > length())
- how_many = length();
-
- // reset new_oid
- new_oid.set_invalid();
-
- size_t new_size = how_many - start;
- if (new_size == 0)
- new_size++;
- new_oid.smival.value.oid.len = new_size;
- ACE_NEW_RETURN(new_oid.smival.value.oid.ptr,
- SmiUINT32 [ new_oid.smival.value.oid.len], -1);
- // copy source to destination
- ACE_OS::memcpy( (SmiLPBYTE) new_oid.smival.value.oid.ptr,
- (SmiLPBYTE) (smival.value.oid.ptr + start),
- new_size * sizeof(SmiLPBYTE));
- return 0;
-}
-
-
-//=============[Oid::StrToOid( char *string, SmiLPOID dst) ]==============
-// convert a string to an oid
-int Oid::StrToOid( const char *string, SmiLPOID dstOid, size_t& how_many)
-{
- size_t index = 0;
- size_t number = 0;
-
- // make a temp buffer to copy the data into first
- SmiLPUINT32 temp;
- unsigned long nz;
-
- if (string && *string) {
- nz = ACE_OS::strlen( string);
- }
- else {
- dstOid->len = 0;
- dstOid->ptr = 0;
- return -1;
- }
-
- ACE_NEW_RETURN(temp, SmiUINT32[ nz], -1);
- while (*string!=0 && index<nz) {
- // init the number for each token
- number = 0;
- // skip over the dot
- if (*string=='.')
- string++;
-
- // grab a digit token and convert it to a long int
- while (isdigit(*string))
- number=number*10 + *(string++)-'0';
-
- // check for invalid chars
- if (*string!=0 && *string!='.') {
- // Error: Invalid character in string
- delete [] temp;
- return -1;
- }
-
- // stuff the value into the array
- temp[index] = number;
- index++; // bump the counter
- }
-
-
- // get some space for the real oid
- ACE_NEW_RETURN(dstOid->ptr, SmiUINT32[ index], -1);
- // TODO: make tmp autoptr type delete [] temp to prevent leak
-
- // copy in the temp data
- ACE_OS::memcpy((SmiLPBYTE) dstOid->ptr, (SmiLPBYTE) temp,
- (size_t) (index*sizeof(SmiUINT32)));
-
- // set the len of the oid
- dstOid->len = index;
-
- // free up temp data
- delete [] temp;
-
- how_many = index;
- return 0;
-}
-
-
-//===============[Oid::OidCopy( source, destination) ]====================
-// Copy an oid, return bytes copied
-int Oid::OidCopy( SmiLPOID srcOid, SmiLPOID dstOid, size_t& how_many_bytes)
-{
- // check source len ! zero
- if (srcOid->len == 0)
- return -1;
-
- // copy source to destination
- ACE_OS::memcpy((SmiLPBYTE) dstOid->ptr,
- (SmiLPBYTE) srcOid->ptr,
- (size_t) (srcOid->len * sizeof(SmiUINT32)));
-
- //set the new len
- dstOid->len = srcOid->len;
- how_many_bytes = srcOid->len;
-
- return 0;
-}
-
-
-//===============[Oid::left_comparison( n, Oid) ]=================================
-// compare the n leftmost values of two oids ( left-to_right )
-//
-// self == Oid then return 0, they are equal
-// self < Oid then return -1, <
-// self > Oid then return 1, >
-int Oid::left_comparison( const unsigned long n, const Oid &o) const
-{
- unsigned long z;
- unsigned long len = n;
- int reduced_len = 0;
-
- // 1st case they both are null
- if (( len==0)&&( this->smival.value.oid.len==0))
- return 0; // equal
-
- // verify that n is valid, must be >= 0
- if ( len <=0)
- return 1; // ! equal
-
- // only compare for the minimal length
- if (len > this->smival.value.oid.len) {
- len = this->smival.value.oid.len;
- reduced_len = 1;
- }
- if (len > o.smival.value.oid.len) {
- len = o.smival.value.oid.len;
- reduced_len = 1;
- }
-
- z = 0;
- while(z < len) {
- if ( this->smival.value.oid.ptr[z] < o.smival.value.oid.ptr[z])
- return -1; // less than
- if ( this->smival.value.oid.ptr[z] > o.smival.value.oid.ptr[z])
- return 1; // greater than
- z++;
- }
-
- // if we truncated the len then these may not be equal
- if (reduced_len) {
- if (this->smival.value.oid.len < o.smival.value.oid.len)
- return -1;
- if (this->smival.value.oid.len > o.smival.value.oid.len)
- return 1;
- }
- return 0; // equal
-
-}
-
-
-//===============[Oid::left_comparison( n, Oid) ]=================================
-// compare the n rightmost bytes (right-to-left)
-// returns 0, equal
-// returns -1, <
-// returns 1 , >
-int Oid::right_comparison( const unsigned long n, const Oid &o) const
-{
- // oid to compare must have at least the same number
- // of sub-ids to comparison else the argument Oid is
- // less than THIS
- if ( o.length() < n)
- return -1;
-
- // also can't compare argument oid for sub-ids which
- // THIS does not have
- if ( this->length() < n)
- return -1;
-
- int start = (int) this->length();
- int end = (int) start - (int) n;
- for ( int z=start;z< end;z--)
- {
- if ( o.smival.value.oid.ptr[z] < this->smival.value.oid.ptr[z])
- return -1;
- if ( o.smival.value.oid.ptr[z] > this->smival.value.oid.ptr[z])
- return 1;
- }
-
- return 0; // they are equal
-
-}
-
-
-//================[ Oid::valid() ]========================================
-// is the Oid object valid
-// returns validity
-int Oid::valid() const
-{
- return ( smival.value.oid.ptr ? 1 : 0 );
-}
-
-//================[Oid::OidToStr ]=========================================
-// convert an oid to a string
-int Oid::OidToStr( SmiLPOID srcOid, unsigned long size,
- char *string, size_t& how_many_bytes)
-{
- unsigned long index = 0;
- unsigned totLen = 0;
- char szNumber[SNMPBUFFSIZE];
-
- // init the string
- string[totLen] = 0;
-
- // verify there is something to copy
- if (srcOid->len == 0)
- return -1;
-
- // loop through and build up a string
- for (index=0; index < srcOid->len; index++) {
-
- // convert data element to a string
- if (ACE_OS::sprintf( szNumber,"%lu", srcOid->ptr[index]) == -1)
- return -1;
-
- // verify len is not over
- if (totLen + ACE_OS::strlen(szNumber) + 1 >= size)
- return -2;
-
- // if not at end, pad with a dot
- if (totLen!=0)
- string[totLen++] = '.';
-
- // copy the string token into the main string
- ACE_OS::strcpy(string + totLen, szNumber);
-
- // adjust the total len
- totLen += ACE_OS::strlen(szNumber);
- }
-
- how_many_bytes = totLen + 1;
- return 0;
-}
-
-
-//================[ general Value = operator ]========================
-SnmpSyntax& Oid::operator=( SnmpSyntax &val)
-{
- // protect against assignment from self
- if ( this == &val )
- return *this;
-
- // blow away old value
- smival.value.oid.len = 0;
- if (smival.value.oid.ptr) {
- set_invalid();
- }
-
- // assign new value
- if (val.valid()) {
- switch (val.get_syntax()) {
- case sNMP_SYNTAX_OID:
- set_data( ((Oid &)val).smival.value.oid.ptr,
- (unsigned int)((Oid &)val).smival.value.oid.len);
- break;
- }
- }
- return *this;
-}
-
-//================[ [] operator ]=====================================
-unsigned long& Oid::operator[](size_t position)
-{
- return smival.value.oid.ptr[position];
-}
-
-//================[ clone ]===========================================
-SnmpSyntax *Oid::clone() const
-{
- return (SnmpSyntax *) new Oid(*this);
-}
diff --git a/ASNMP/asnmp/oid.h b/ASNMP/asnmp/oid.h
deleted file mode 100644
index 77118b518f0..00000000000
--- a/ASNMP/asnmp/oid.h
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-#ifndef OID_CLS_
-#define OID_CLS_
-//=============================================================================
-/**
- * @file oid.h
- *
- * $Id$
- *
- * This class is fully contained and does not rely on or any other
- * SNMP libraries. This class is portable across any platform
- * which supports C++. Ported to ACE by Mike MacFaden mrm@cisco.com
- * and modified for MT. Some API cleanup: collapse constructors,
- * add suboid() method remove unnecessary overload, and update a few
- * names and types to improve clarity.
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----------[ extern C libraries Needed ]---------------------------------
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/smival.h" // derived class for all values
-
-/**
- * @class Oid
- *
- * @brief Implement RFC 1155 Object Identifier (OID) datatype
- */
-class ASNMP_Export Oid : public SnmpSyntax
-{
-public:
- /// constructor using a dotted string
- Oid( const char * dotted_oid_string = "", size_t size = unsigned(-1) );
-
- /// constructor using another oid object
- Oid ( const Oid &oid);
-
- /// constructor from raw form
- Oid(const unsigned long *raw_oid, size_t oid_len);
-
- /// destructor
- ~Oid();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// assignment to another oid object overloaded
- Oid& operator=( const Oid &oid);
-
- /// equal operator overloaded
- friend ASNMP_Export bool operator==( const Oid &lhs,const Oid &rhs);
-
- /// not equal operator overloaded
- friend ASNMP_Export bool operator!=( const Oid &lhs,const Oid &rhs);
-
- /// less than < overloaded
- friend ASNMP_Export bool operator<( const Oid &lhs,const Oid &rhs);
-
- /// less than <= overloaded
- friend ASNMP_Export bool operator<=( const Oid &lhs,const Oid &rhs);
-
- /// greater than > overloaded
- friend ASNMP_Export bool operator>( const Oid &lhs,const Oid &rhs);
-
- /// greater than >= overloaded
- friend ASNMP_Export bool operator>=( const Oid &lhs,const Oid &rhs);
-
- /// append operator, appends a string
- Oid& operator+=( const char *a);
-
- /// appends an int
- Oid& operator+=( const unsigned long i);
-
- /// appends an Oid
- Oid& operator+=( const Oid &o);
-
- /// allows element access
- unsigned long & operator[]( size_t position);
-
- /// return the WinSnmp oid part
- SmiLPOID oidval();
-
- /// reset the data from raw 1 byte format
- void set_data( const char *dotted_oid_string);
-
- /// reset the data from raw 4byte integer format
- void set_data( const unsigned long *raw_oid, const size_t oid_len);
-
- /// return the len of the oid
- size_t length() const;
-
- /// trim off the n rightmost values of an oid
- void trim( const size_t how_many = 1);
-
- /// the equivalent of a substr(new_str, 0, 1)
- int suboid(Oid& oid, size_t start = 0, size_t how_many = size_t (-1));
-
- /**
- * compare the n leftmost bytes (left-to-right)
- * returns 0, equal
- * returns -1, <
- * returns 1 , >
- */
- int left_comparison( const unsigned long n, const Oid &o) const;
-
-
- /**
- * compare the n rightmost bytes (right-to-left)
- * returns 0, equal
- * returns -1, <
- * returns 1 , >
- */
- int right_comparison( const unsigned long n, const Oid &o) const;
-
- /// is the Oid object valid
- int valid() const;
-
- /// return dotted string value from the right
- /// where the user specifies how many positions to print
- const char *to_string();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=( SnmpSyntax &val);
-
-protected:
- /// used for returning oid string
- char *iv_str;
-
- /// convert a string to an smi oid
- int StrToOid( const char *string, SmiLPOID dstOid, size_t& how_many_bytes);
-
- /// clone an smi oid
- int OidCopy( SmiLPOID srcOid, SmiLPOID dstOid, size_t& how_many_bytes);
-
- /// convert an smi oid to its string representation
- int OidToStr(SmiLPOID srcOid, SmiUINT32 size, char *string, size_t& how_many_bytes);
-
- private:
- /// release memory, re-init data members
- void set_invalid();
-
- /// initialize object data members
- void set_null();
- void init_value( const SmiLPOID srcOid, size_t len);
- void init_value(const unsigned long *raw_oid, size_t oid_len);
-};
-
-#endif //OID_CLS_
diff --git a/ASNMP/asnmp/oid_def.h b/ASNMP/asnmp/oid_def.h
deleted file mode 100644
index 31ccbfa3e4a..00000000000
--- a/ASNMP/asnmp/oid_def.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*-C++-*- */
-#ifndef OID_DEF
-#define OID_DEF
-//=============================================================================
-/**
- * @file oid_def.h
- *
- * $Id$
- *
- * Well known Oids defined in RFC 1215
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
-
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-// SMI trap oid def
-class snmpTrapsOid: public Oid {
- public:
- snmpTrapsOid (void):Oid("1.3.6.1.6.3.1.1.5"){};
-};
-
-// SMI Enterprose Oid
-class snmpTrapEnterpriseOid: public Oid {
- public:
- snmpTrapEnterpriseOid(void):Oid("1.3.6.1.6.3.1.1.4.3.0"){};
-};
-
-// SMI Cold Start Oid
-class coldStartOid: public snmpTrapsOid {
- public:
- coldStartOid( void){*this+=".1";};
-};
-
-// SMI WarmStart Oid
-class warmStartOid: public snmpTrapsOid {
- public:
- warmStartOid( void){*this+=".2";};
-};
-
-// SMI LinkDown Oid
-class linkDownOid: public snmpTrapsOid {
- public:
- linkDownOid( void){*this+=".3";};
-};
-
-
-// SMI LinkUp Oid
-class linkUpOid: public snmpTrapsOid {
- public:
- linkUpOid( void){*this+=".4";};
-};
-
-// SMI Authentication Failure Oid
-class authenticationFailureOid: public snmpTrapsOid {
- public:
- authenticationFailureOid( void){*this+=".5";};
-};
-
-// SMI egpneighborloss Oid
-class egpNeighborLossOid: public snmpTrapsOid {
- public:
- egpNeighborLossOid( void){*this+=".6";};
-};
-
-
-#endif // OID_DEF
diff --git a/ASNMP/asnmp/pdu.cpp b/ASNMP/asnmp/pdu.cpp
deleted file mode 100644
index cbe67dcbbab..00000000000
--- a/ASNMP/asnmp/pdu.cpp
+++ /dev/null
@@ -1,499 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// pdu.cpp
-//
-// = DESCRIPTION
-// Pdu class implementation. Encapsulation of an SMI Protocol
-// Data Unit (PDU) in C++.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "asnmp/pdu.h" // include Pdu class definition
-#include "ace/OS_NS_string.h"
-#include "ace/OS_NS_stdio.h"
-
-ACE_RCSID(asnmp, pdu, "$Id$")
-
-//=====================[ constructor no args ]=========================
-Pdu::Pdu( void): vb_count_(0), error_status_(0), error_index_(0),
-validity_(0), request_id_(0), pdu_type_(0), notify_timestamp_(0),
-output_(0)
-{
-}
-
-//=====================[ constructor with vbs_ and count ]==============
-Pdu::Pdu( Vb* pvbs, const int pvb_count): vb_count_(0), error_index_(0),
-validity_(0), request_id_(0), pdu_type_(0), notify_timestamp_(0),
-output_(0)
-{
- int z = 0; // looping variable
-
- // zero is ok
- if ( pvb_count == 0) {
- validity_ = 1;
- return;
- }
-
- // check for over then max
- if ( pvb_count > MAX_VBS) {
- validity_ = 0;
- return;
- }
-
- // loop through and assign internal vbs_
- for (z = 0;z < pvb_count; z++) {
- validity_ = 0;
- ACE_NEW(vbs_[z], Vb( pvbs[z]));
- validity_ = 1;
- }
-
- // assign the vb count
- vb_count_ = pvb_count;
-
- validity_ = 1;
-}
-
-//=====================[ constructor with another Pdu instance ]========
-Pdu::Pdu( const Pdu &pdu): vb_count_(0),
-error_index_(0), validity_(0), request_id_(0), pdu_type_(0),
-notify_timestamp_(0), output_(0)
-{
- *this = pdu;
- return;
-}
-
-//=====================[ destructor ]====================================
-Pdu::~Pdu()
-{
- delete_all_vbs();
- delete [] output_;
-}
-
-
-//=====================[ assignment to another Pdu object overloaded ]===
-Pdu& Pdu::operator=( const Pdu &pdu)
-{
- int z; // looping variable
-
- // Initialize all mv's
- error_status_ = pdu.error_status_;
- error_index_ = pdu.error_index_;
- request_id_ = pdu.request_id_;
- pdu_type_ = pdu.pdu_type_;
- notify_id_ = pdu.notify_id_;
- notify_timestamp_ = pdu.notify_timestamp_;
- notify_enterprise_ = pdu.notify_enterprise_;
- validity_ = 1;
-
- // free up old vbs_
- for ( z = 0;z < vb_count_; z++)
- delete vbs_[z];
- vb_count_ = 0;
-
- // check for zero case
- if ( pdu.vb_count_ == 0) {
- return *this;
- }
-
- // loop through and fill em up
- for (z = 0; z < pdu.vb_count_; z++) {
- validity_ = 0;
- ACE_NEW_RETURN(vbs_[z], Vb ( *(pdu.vbs_[z])), *this);
- validity_ = 1;
- }
-
- vb_count_ = pdu.vb_count_;
- return *this;
-}
-
-// append operator, appends a string
-Pdu& Pdu::operator+=( Vb &vb)
-{
-
- // do we have room?
- if ( vb_count_ + 1 > MAX_VBS)
- return *this;
-
- // add the new one
- validity_ = 0;
- ACE_NEW_RETURN(vbs_[vb_count_], Vb (vb), *this);
- // set up validity_
- validity_ = 1;
-
- // up the vb count
- vb_count_++;
-
- // return self reference
- return *this;
-
-}
-
-// return fomatted version of this object
-const char * Pdu::to_string()
-{
- // determine how big a buffer and allocate it
- const int HEADER_STR = 100;
- unsigned size = HEADER_STR; // header takes up this much room
- int z;
-
- for ( z = 0; z < vb_count_; z++)
- size += ACE_OS::strlen(vbs_[z]->to_string());
-
- ACE_NEW_RETURN(output_, char[size], "");
-
- // print pdu header info
- sprintf(output_, "pdu: valid: %d type:%d, req:%d, cnt: %d, err stat: %d \
- err idx: %d\n", validity_, pdu_type_, (int) request_id_,
- vb_count_, error_status_, error_index_ );
-
- // now append vb pairs in this object
- for ( z = 0; z < vb_count_; z++) {
- ACE_OS::strcat(output_, vbs_[z]->to_string());
- ACE_OS::strcat(output_, "\n\t");
- }
-
- return output_;
-}
-
-
-//=====================[ extract Vbs from Pdu ]==========================
-// how do you know that the caler has enough memory???
-// should I self allocate this in here and require the
-// caller then to free it up at soem later time
-int Pdu::get_vblist( Vb* pvbs, const int pvb_count)
-{
- if ((!pvbs) || ( pvb_count < 0) || ( pvb_count > vb_count_))
- return 0;
-
- // loop through all vbs_ and assign to params
- int z;
- for (z = 0; z < pvb_count; z++)
- pvbs[z] = *vbs_[z];
-
- return 1;
-
-}
-
-//=====================[ deposit Vbs ]===================================
-int Pdu::set_vblist( Vb* pvbs, const int pvb_count)
-{
-
- // if invalid then don't destroy
- if ((!pvbs) || ( pvb_count < 0) || ( pvb_count > MAX_VBS))
- return 0;
-
- // free up current vbs_
- int z;
- for ( z = 0; z < vb_count_; z++)
- delete vbs_[z];
- vb_count_ = 0;
-
- // check for zero case
- if ( pvb_count == 0) {
- validity_ = 1;
- error_status_ = 0;
- error_index_ = 0;
- request_id_ = 0;
- return 0;
- }
-
-
- // loop through all vbs_ and reassign them
- for ( z = 0; z < pvb_count; z++) {
- validity_ = 0;
- ACE_NEW_RETURN(vbs_[z], Vb (pvbs[z]), 0);
- validity_ = 1;
- }
-
- vb_count_ = pvb_count;
-
- // clear error status and index since no longer valid
- // request id may still apply so don't reassign it
- error_status_ = 0;
- error_index_ = 0;
- validity_ = 1;
-
- return 1;
-}
-
-//===================[ get a particular vb ]=============================
-// here the caller has already instantiated a vb object
-// index is zero based
-int Pdu::get_vb( Vb &vb, const int index) const
-{
- // can't have an index less than 0
- if ( index < 0)
- return 0;
-
- // can't ask for something not there
- if ( index > (vb_count_ - 1))
- return 0;
-
- // asssign it
- vb = *vbs_[index];
-
- return 1;
-}
-
-//===================[ set a particular vb ]=============================
-int Pdu::set_vb( Vb &vb, const int index)
-{
- // can't set a vb at index less than 0
- if ( index < 0)
- return 0;
-
- // can't ask for something not there
- if ( index > (vb_count_ - 1))
- return 0;
-
- // delete what is there
- delete vbs_[index];
-
- // assign it
- validity_ = 0;
- ACE_NEW_RETURN(vbs_[index], Vb (vb), 0);
- validity_ = 1;
-
- return 1;
-
-}
-
-//=====================[ return number of vbs_ ]==========================
-int Pdu::get_vb_count() const
-{
- return vb_count_;
-}
-
-//=====================[ return the error status ]=======================
-int Pdu::get_error_status() const
-{
- return error_status_;
-}
-
-const char *Pdu::agent_error_reason()
-{
- int pdu_err = get_error_status();
- if (pdu_err == 0) // any real error?
- return "not in error state";
-
- int n_vbs = get_vb_count();
- Vb bad;
- get_vb(bad, get_error_index() -1); // not zero based??
- const char *pmsg = Snmp::error_string(get_error_status());
- const char *id = bad.to_string_oid();
- const char *val = bad.to_string_value();
- const int HDR_SZ = 100;
-
- if (!output_) {
- int size = ACE_OS::strlen(pmsg) + ACE_OS::strlen(id) +
- ACE_OS::strlen(val);
- ACE_NEW_RETURN(output_, char[size + HDR_SZ], "");
- }
-
- ACE_OS::sprintf(output_,
- "FAIL PDU REPORT: pdu id: %lu vb cnt: %d vb idx: %d\n"
- " msg: %s vb oid: %s value: %s\n",
- get_request_id(), n_vbs, get_error_index(),
- pmsg, id, val);
-
- return output_;
-}
-
-//=====================[ set the error status ]==========================
-// friend
-void set_error_status( Pdu *pdu, const int status)
-{
- if (pdu)
- pdu->error_status_ = status;
-}
-
-//=====================[ return the error index ]========================
-int Pdu::get_error_index() const
-{
- return error_index_;
-}
-
-//=====================[ set the error index ]===========================
-// friend
-void set_error_index( Pdu *pdu, const int index)
-{
- if (pdu)
- pdu->error_index_ = index;
-}
-
-//=====================[ clear error status ]=============================
-void clear_error_status( Pdu *pdu)
-{
- if (pdu)
- pdu->error_status_ = 0;
-}
-
-//=====================[ clear error index ]==============================
-void clear_error_index( Pdu *pdu)
-{
- if (pdu)
- pdu->error_index_ = 0;
-}
-
-//=====================[ return the request id ]==========================
-unsigned long Pdu::get_request_id() const
-{
- return request_id_;
-}
-
-//=====================[ set the request id ]=============================
-// friend function
-void set_request_id( Pdu *pdu, const unsigned long rid)
-{
- if (pdu)
- pdu->request_id_ = rid;
-}
-
-//=====================[ returns validity_ of Pdu instance ]===============
-int Pdu::valid() const
-{
- return validity_;
-}
-
-//=====================[ get the pdu type ]===============================
-unsigned short Pdu::get_type()const
-{
- return pdu_type_;
-}
-
-// set the pdu type
-void Pdu::set_type( unsigned short type)
-{
- pdu_type_ = type;
-}
-
-
-// trim off the last vb
-int Pdu::trim(const int p)
-{
- int lp = p;
-
- // verify that lp is legal
- if ( lp < 0 || lp > vb_count_)
- return 0;
-
- while ( lp != 0) {
- if ( vb_count_ > 0) {
- delete vbs_[vb_count_ - 1];
- vb_count_--;
- }
- lp--;
- }
- return 1;
-}
-
-
-
-// delete a Vb anywhere within the Pdu
-int Pdu::delete_vb( const int p)
-{
- // position has to be in range
- if (( p < 0) || ( p > (vb_count_ - 1)))
- return 0;
-
- // safe to remove it
- delete vbs_[ p];
-
- for ( int z=p;z < (vb_count_-1);z++) {
- vbs_[z] = vbs_[z+1];
- }
- vb_count_--;
-
- return 1;
-}
-
-void Pdu::delete_all_vbs()
-{
- for ( int z = 0; z < vb_count_; z++)
- delete vbs_[z];
- vb_count_ = 0;
-}
-
-
-// set notify timestamp
-void Pdu::set_notify_timestamp( const TimeTicks & timestamp)
-{
- notify_timestamp_ = timestamp;
-}
-
-
-// get notify timestamp
-void Pdu::get_notify_timestamp( TimeTicks & timestamp) const
-{
- timestamp = notify_timestamp_;
-}
-
-// set the notify id
-void Pdu::set_notify_id( const Oid id)
-{
- notify_id_ = id;
-}
-
-// get the notify id
-void Pdu::get_notify_id( Oid &id) const
-{
- id = notify_id_;
-}
-
-// set the notify enterprise
-void Pdu::set_notify_enterprise( const Oid &enterprise)
-{
- notify_enterprise_ = enterprise;
-}
-
-// get the notify enterprise
-void Pdu::get_notify_enterprise( Oid & enterprise) const
-{
- enterprise = notify_enterprise_;
-}
-
-// ------ class VbIter -------------------
-VbIter::VbIter(Pdu& pdu): idx_(-1), pdu_(&pdu)
-{
-}
-
-// returns 1 if ok, else 0 if none left
-int VbIter::next(Vb& vb)
-{
- if (idx_ == -1) {
- idx_ = 0;
- pdu_->get_vb(vb, idx_++);
- return 1;
- }
- else
- if (idx_ < pdu_->get_vb_count()) {
- pdu_->get_vb(vb, idx_++);
- return 1;
- }
- return 0; // non left
-}
diff --git a/ASNMP/asnmp/pdu.h b/ASNMP/asnmp/pdu.h
deleted file mode 100644
index a2d84388da0..00000000000
--- a/ASNMP/asnmp/pdu.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/* -*-C++-*- */
-#ifndef PDU_CLS_
-#define PDU_CLS_
-//=============================================================================
-/**
- * @file pdu.h
- *
- * $Id$
- *
- * Pdu class definition. Encapsulation of an SMI Protocol
- * Data Unit (PDU) aka Packet in C++.
- *
- *
- * @author Peter E Mellquist original code Michael MacFaden mrm@cisco.com ACE port
- * @author add iterator class for pdus
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-// TODO: this needs to be moved into the CLASS and modifyable at runtime
-// TODO: define an iterator object to traverse the vbs in a pdu
-
-#define MAX_VBS 25
-#include "asnmp/vb.h" // include Vb class definition
-
-/**
- * @class Pdu
- *
- * @brief Protocol Data Unit (PDU) concrete class. An abstraction of the
- * data packet used to by two SNMP sessions to communicate.
- */
-class ASNMP_Export Pdu
-{
-public:
- /// constructor no args
- Pdu( void);
-
- /// constructor with vbs and count
- Pdu( Vb* pvbs, const int pvb_count);
-
- /// constructor with another Pdu instance
- Pdu( const Pdu &pdu);
-
- /// destructor
- ~Pdu();
-
- /// assignment to another Pdu object overloaded
- Pdu& operator=( const Pdu &pdu);
-
- /// append a vb to the pdu
- Pdu& operator+=( Vb &vb);
-
- // TODO: add Pdu& operator-=(const Vb &vb);
-
- /// extract all Vbs from Pdu
- int get_vblist( Vb* pvbs, const int pvb_count);
-
- /// deposit all Vbs to Pdu
- int set_vblist( Vb* pvbs, const int pvb_count);
-
- /// get a particular vb
- /// where 0 is the first vb
- int get_vb( Vb &vb, const int index = 0) const;
-
- /// set a particular vb
- /// where 0 is the first vb
- int set_vb( Vb &vb, const int index);
-
- /// return number of vbs
- int get_vb_count() const;
-
- /// return the error status
- int get_error_status() const;
-
- /// return the complete error info from this pdu
- const char *agent_error_reason();
-
- /// set the error status
- friend ASNMP_Export void set_error_status( Pdu *pdu, const int status);
-
- /// return the error index
- int get_error_index() const;
-
- /// set the error index
- friend ASNMP_Export void set_error_index( Pdu *pdu, const int index);
-
- /// clear error status
- friend ASNMP_Export void clear_error_status( Pdu *pdu);
-
- /// clear error index
- friend ASNMP_Export void clear_error_index( Pdu *pdu);
-
- /// return the request id
- unsigned long get_request_id() const;
-
- /// set the request id
- friend void set_request_id( Pdu *pdu, const unsigned long rid);
-
- /// get the pdu type
- unsigned short get_type() const;
-
- /// set the pdu type
- void set_type( unsigned short type);
-
- /// returns validity of Pdu instance
- int valid() const;
-
- /// trim off count vbs from the end of the vb list
- int trim(const int count=1);
-
- /// delete a Vb anywhere within the Pdu
- int delete_vb( const int position);
-
- /// delete_all vbs in pdu
- void delete_all_vbs();
-
- /// set notify timestamp
- void set_notify_timestamp( const TimeTicks & timestamp);
-
- /// get notify timestamp
- void get_notify_timestamp( TimeTicks & timestamp) const;
-
- /// set the notify id
- void set_notify_id( const Oid id);
-
- /// get the notify id
- void get_notify_id( Oid &id) const;
-
- /// set the notify enterprise
- void set_notify_enterprise( const Oid &enterprise);
-
- /// get the notify enterprise
- void get_notify_enterprise( Oid & enterprise) const;
-
- /// return fomatted version of this object
- const char *to_string();
-
-
- protected:
- /// pointer to array of Vbs
- Vb *vbs_[MAX_VBS];
-
- /// count of Vbs
- int vb_count_;
-
- /// SMI error status
- int error_status_;
-
- /// SMI error index
- int error_index_;
-
- /// valid boolean status of object construction
- /// SMI request id
- int validity_;
- unsigned long request_id_;
-
- /// derived at run time based on request type
- unsigned short pdu_type_;
-
- /**
- * a timestamp associated with an infor
- * for notify Pdu objects only
- * traps & notifies
- */
- TimeTicks notify_timestamp_;
-
- /// an id
- Oid notify_id_;
-
- Oid notify_enterprise_;
-
- private:
- /// buffer for to_string()
- char *output_;
-};
-
-
-/**
- * @class VbIter
- *
- * @brief Utility class to iterate once through a PDU varbind list
- */
-class ASNMP_Export VbIter
-{
- public:
- /// default constructor
- VbIter(Pdu& pdu);
-
- /// returns 1 if ok, else 0 if none left
- int next(Vb& vb);
-
- private:
- /// disallow copy constructor use
- VbIter(const VbIter&);
-
- /// current object in list
- int idx_;
-
- /// ptr to pdu being interated over
- Pdu *pdu_;
-};
-
-#endif //PDU_CLS_
-
diff --git a/ASNMP/asnmp/sagent.cpp b/ASNMP/asnmp/sagent.cpp
deleted file mode 100644
index 8ee2fdb5b8d..00000000000
--- a/ASNMP/asnmp/sagent.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// sagent.cpp
-//
-// = DESCRIPTION
-// SNMP agent class definition. The sagent class provides an object oriented
-// approach for creating SNMP Agents. The sagent class is an encapsulation
-// of SNMP sessions, gets, sets, etc.
-//
-// = AUTHOR
-// Michael R. MacFaden
-//
-// ============================================================================
-#include "ace/Reactor.h"
-#include "ace/SOCK_Dgram.h"
-
-#include "asnmp/oid.h" // snmp++ oid class
-#include "asnmp/vb.h" // snbmp++ vb class
-#include "asnmp/target.h" // snmp++ target class
-#include "asnmp/pdu.h" // snmp++ pdu class
-#include "asnmp/snmperrs.h" // error macros and strings
-#include "asnmp/address.h" // snmp++ address class defs
-#include "asnmp/snmp.h" // manager snmp interface
-#include "asnmp/sagent.h" // agent interface
-#include "asnmp/transaction.h" // convert from wire to API
-
-ACE_RCSID(asnmp, sagent, "$Id$")
-
-sagent::sagent(unsigned short port): Snmp(port)
-{
- ACE_TRACE("sagent::sagent(short)");
-}
-
-sagent::~sagent()
-{
- ACE_TRACE("sagent::~sagent");
-}
-
-int sagent::handle_input(ACE_HANDLE fd)
-{
- ACE_TRACE("sagent::handle_input");
-
- transaction tr(iv_snmp_session_); // this section needs a better design
- tr.handle_input(fd);
- char rcv_com_str[MAX_COMM_STR_LEN];
- if (tr.result(pdu_, rcv_com_str) < 0)
- return 0;
- OctetStr community(rcv_com_str);
- const ACE_INET_Addr &ta = tr.get_from_addr();
- ACE_TCHAR buf_tmp[MAXHOSTNAMELEN + 1];
- ta.addr_to_string (buf_tmp, MAXHOSTNAMELEN);
- UdpAddress ra (ACE_TEXT_ALWAYS_CHAR (buf_tmp));
- tgt_.set_address(ra);
-
-
- // process msg here by calling subclass's implementation
- switch (pdu_.get_type()){
- case sNMP_PDU_GET:
- tgt_.set_read_community(community);
- this->handle_get(pdu_, tgt_);
- break;
-
- case sNMP_PDU_GETNEXT:
- tgt_.set_read_community(community);
- this->handle_get_next(pdu_, tgt_);
- break;
-
- case sNMP_PDU_SET:
- tgt_.set_write_community(community);
- this->handle_set(pdu_, tgt_);
- break;
-
- default:
- ACE_ASSERT(0);
- }
- return 0;
-}
-
-ACE_HANDLE sagent::get_handle() const
-{
- ACE_TRACE("sagent::get_handle");
- return iv_snmp_session_.get_handle();
-}
-
-int sagent::respond(Pdu& pdu,UdpTarget& tgt)
-{
- pdu.set_type(sNMP_PDU_RESPONSE);
- transaction tr(pdu, tgt, iv_snmp_session_);
- tr.send();
- return 0;
-}
diff --git a/ASNMP/asnmp/sagent.h b/ASNMP/asnmp/sagent.h
deleted file mode 100644
index d220c3ed459..00000000000
--- a/ASNMP/asnmp/sagent.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*-C++-*- */
-#ifndef SAGENT_CLS_
-#define SAGENT_CLS_
-//=============================================================================
-/**
- * @file sagent.h
- *
- * $Id$
- *
- * SNMP agent class defintion. The sagent class provides an object oriented
- * approach for creating SNMP Agents. The sagent class is an encapsulation of SNMP
- * sessions, gets, sets, etc.
- *
- * @author Michael R. MacFaden
- */
-//=============================================================================
-
-#include "ace/Reactor.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/SOCK_Dgram.h"
-
-#include "asnmp/oid.h" // snmp++ oid class
-#include "asnmp/vb.h" // snbmp++ vb class
-#include "asnmp/target.h" // snmp++ target class
-#include "asnmp/pdu.h" // snmp++ pdu class
-#include "asnmp/snmperrs.h" // error macros and strings
-#include "asnmp/address.h" // snmp++ address class defs
-#include "asnmp/snmp.h" // snmp interface
-
-// sagent - supports Version 1 operations in blocking mode
-
-#define DEF_AGENT_PORT (161)
-
-/**
- * @class sagent
- *
- * @brief Concrete class sagent defines the session and interface to
- * communicate with another SNMP Version 1 manager
- */
-class ASNMP_Export sagent : public ACE_Event_Handler, private Snmp
-{
- public:
-
-
- // override the next three methods (callbacks) to implment your agent
- //
-
- /// retrieve data from a peer agent for a given list of oid values
- virtual int handle_get( Pdu &pdu, UdpTarget &target) = 0;
-
- /// retrieve data lexically adjacent to the oids specified in the pdu
- /// from the peer agent
- virtual int handle_get_next( Pdu &pdu, UdpTarget &target) = 0;
-
- /// set data in the agent from the list of oids in the pdu
- virtual int handle_set( Pdu &pdu, UdpTarget &target) = 0;
-
- /// new pdu received from mgr (reactor calls this)
- virtual int handle_input(ACE_HANDLE);
-
- /// retrieve io descriptor (reactor uses this)
- virtual ACE_HANDLE get_handle() const;
-
- /// send a response pdu to the mgr
- int respond(Pdu& pdu, UdpTarget& tgt);
-
- protected:
- sagent(unsigned short port = DEF_AGENT_PORT);
- virtual ~sagent();
-
-private:
- sagent(const sagent&);
- Pdu pdu_; // current input pdu
- UdpTarget tgt_; // addr & com strs
-};
-
-#endif //SAGENT_CLS_
-
diff --git a/ASNMP/asnmp/smi.h b/ASNMP/asnmp/smi.h
deleted file mode 100644
index 3e505c64cb8..00000000000
--- a/ASNMP/asnmp/smi.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* -*-C++-*- */
-#ifndef SMIDEF_
-#define SMIDEF_
-//=============================================================================
-/**
- * @file smi.h
- *
- * $Id$
- *
- * Address class definition. Encapsulates various network
- * addresses into easy to use, safe and portable classes.
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-
-=====================================================================*/
-
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-//----------[ ASN/BER Base Types ]-----------------------------------------
-// Basic Encoding Rules (BER)
-// (used in forming SYNTAXes and certain SNMP types/values)
-#define aSN_UNIVERSAL (0x00)
-#define aSN_APPLICATION (0x40)
-#define aSN_CONTEXT (0x80)
-#define aSN_PRIVATE (0xC0)
-#define aSN_PRIMITIVE (0x00)
-#define aSN_CONSTRUCTOR (0x20)
-
-//------[ SNMP ObjectSyntax Values ]---------------------------------------
-#define sNMP_SYNTAX_SEQUENCE (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x10)
-
-
-//-------------------------------------------------------------------------
-// These values are used in the "syntax" member
-// of the smiVALUE structure which follows.
-// Note: UInt32 is indistinguishable from Gauge32 per SNMPv2 Draft Standard
-// NsapAddr is obsoleted as unique SMI type per SNMPv2 Draft Standard
-#define sNMP_SYNTAX_INT (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x02)
-#define sNMP_SYNTAX_BITS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x03)
-#define sNMP_SYNTAX_OCTETS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x04)
-#define sNMP_SYNTAX_NULL (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x05)
-#define sNMP_SYNTAX_OID (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x06)
-#define sNMP_SYNTAX_INT32 sNMP_SYNTAX_INT
-#define sNMP_SYNTAX_IPADDR (aSN_APPLICATION | aSN_PRIMITIVE | 0x00)
-#define sNMP_SYNTAX_CNTR32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x01)
-#define sNMP_SYNTAX_GAUGE32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x02)
-#define sNMP_SYNTAX_TIMETICKS (aSN_APPLICATION | aSN_PRIMITIVE | 0x03)
-#define sNMP_SYNTAX_OPAQUE (aSN_APPLICATION | aSN_PRIMITIVE | 0x04)
-#define sNMP_SYNTAX_CNTR64 (aSN_APPLICATION | aSN_PRIMITIVE | 0x06)
-#define sNMP_SYNTAX_UINT32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x07)
-
-//-------------------------------------------------------------------------
-
-//---------------[ Exception conditions for SNMPv2 ]-----------------------
-// support SNMP v2
-#define sNMP_SYNTAX_NOSUCHOBJECT (aSN_CONTEXT | aSN_PRIMITIVE | 0x00)
-#define sNMP_SYNTAX_NOSUCHINSTANCE (aSN_CONTEXT | aSN_PRIMITIVE | 0x01)
-#define sNMP_SYNTAX_ENDOFMIBVIEW (aSN_CONTEXT | aSN_PRIMITIVE | 0x02)
-
-
-//--------------[ different types of PDU's ]-------------------------------
-#define sNMP_PDU_GET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x0)
-#define sNMP_PDU_GETNEXT (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x1)
-#define sNMP_PDU_RESPONSE (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x2)
-#define sNMP_PDU_SET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x3)
-#define sNMP_PDU_V1TRAP (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x4)
-#define sNMP_PDU_GETBULK (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x5)
-#define sNMP_PDU_INFORM (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x6)
-#define sNMP_PDU_TRAP (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x7)
-
-
-//------[ smi typedefs ]---------------------------------------------------
-// SNMP-related types from RFC1442 (SMI)
-
-typedef unsigned char SmiBYTE, *SmiLPBYTE;
-
-//-------------------------------------------------------------------------
-// SNMP-related types from RFC1442 (SMI)
-
-// int
-typedef long SmiINT, *SmiLPINT;
-
-// int 32
-typedef SmiINT SmiINT32, *SmiLPINT32;
-
-// unit32
-typedef unsigned long SmiUINT32, *SmiLPUINT32;
-
-// octet struct
-typedef struct {
- SmiUINT32 len;
- SmiLPBYTE ptr;} SmiOCTETS, *SmiLPOCTETS;
-
-// bits
-typedef SmiOCTETS SmiBITS, *SmiLPBITS;
-
-// SMI oid struct
-typedef struct {
- SmiUINT32 len;
- SmiLPUINT32 ptr;} SmiOID, *SmiLPOID;
-
-// ipaddr
-typedef SmiOCTETS SmiIPADDR, *SmiLPIPADDR;
-
-// 32bit counter
-typedef SmiUINT32 SmiCNTR32, *SmiLPCNTR32;
-
-// gauge
-typedef SmiUINT32 SmiGAUGE32, *SmiLPGAUGE32;
-
-// timeticks
-typedef SmiUINT32 SmiTIMETICKS, *SmiLPTIMETICKS;
-
-// opaque
-typedef SmiOCTETS SmiOPAQUE, *SmiLPOPAQUE;
-
-// nsapaddr
-typedef SmiOCTETS SmiNSAPADDR, *SmiLPNSAPADDR;
-
-// 64 bit counter
-typedef struct {
- SmiUINT32 hipart;
- SmiUINT32 lopart;
-} SmiCNTR64, *SmiLPCNTR64;
-
-#endif // SMIDEF_
-
-
diff --git a/ASNMP/asnmp/smival.h b/ASNMP/asnmp/smival.h
deleted file mode 100644
index e754206f506..00000000000
--- a/ASNMP/asnmp/smival.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*-C++-*- */
-#ifndef SMIVALUE_
-#define SMIVALUE_
-//=============================================================================
-/**
- * @file smival.h
- *
- * $Id$
- *
- * SMIValue class definition. Superclass for the various types
- * of SNMP values (Address, Oid, Octet, etc.). Provides
- * only a few functions, most info is in subclass.
- *
- *
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----[ includes ]-----------------------------------------------------
-#include "asnmp/smi.h"
-#include "asnmp/ASNMP_Export.h"
-#include "ace/os_include/os_stddef.h"
-
-//----[ macros ]-------------------------------------------------------
-
-//======================================================================
-// SMI value structure conforming with SMI RFC
-//
-typedef struct { /* smiVALUE portion of VarBind */
- SmiUINT32 syntax; /* Insert SNMP_SYNTAX_<type> */
- union {
- SmiINT sNumber; /* SNMP_SYNTAX_INT
- SNMP_SYNTAX_INT32 */
- SmiUINT32 uNumber; /* SNMP_SYNTAX_UINT32
- SNMP_SYNTAX_CNTR32
- SNMP_SYNTAX_GAUGE32
- SNMP_SYNTAX_TIMETICKS */
- SmiCNTR64 hNumber; /* SNMP_SYNTAX_CNTR64 */
- SmiOCTETS string; /* SNMP_SYNTAX_OCTETS
- SNMP_SYNTAX_BITS
- SNMP_SYNTAX_OPAQUE
- SNMP_SYNTAX_IPADDR
- SNMP_SYNTAX_NSAPADDR */
- SmiOID oid; /* SNMP_SYNTAX_OID */
- SmiBYTE empty; /* SNMP_SYNTAX_NULL
- SNMP_SYNTAX_NOSUCHOBJECT
- SNMP_SYNTAX_NOSUCHINSTANCE
- SNMP_SYNTAX_ENDOFMIBVIEW */
- } value;
-} SmiVALUE, *SmiLPVALUE;
-
-// An "abstract" (pure virtual) class that serves as the base class
-// for all specific SNMP syntax types.
-//
-class ASNMP_Export SnmpSyntax {
-
-public:
- virtual const char * to_string() = 0;
- // virtual function for getting a printable ASCII value for any SNMP Value
-
- virtual SmiUINT32 get_syntax() = 0;
- // return the current syntax
-
- virtual SnmpSyntax * clone() const = 0;
- // virtual clone operation for creating a new Value from an existing
- // value. The caller MUST use the delete operation on the return
- // value when done.
-
- virtual ~SnmpSyntax() {};
- // virtual destructor to ensure deletion of derived classes...
-
- virtual SnmpSyntax& operator=(SnmpSyntax &/*val*/)
- {
- return *this;
- }
- // overloaded assignment operator
- // This should be pure virtual, but WinNT compiler
- // complains about unresolved reference at link time.
-
- virtual int valid() const = 0;
- // return validity of value object.
-
-protected:
- SmiVALUE smival;
-};
-
-#endif // SMIVALUE_
diff --git a/ASNMP/asnmp/snmp.cpp b/ASNMP/asnmp/snmp.cpp
deleted file mode 100644
index cc2e1dd4179..00000000000
--- a/ASNMP/asnmp/snmp.cpp
+++ /dev/null
@@ -1,286 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// snmp.cpp
-//
-// = DESCRIPTION
-// The basic SNMPv1 API - blocking version using UDP/IPv4 transport
-// and addressing.
-//
-// = AUTHOR
-// Peter E Mellquist class design/orig code
-// Michael R MacFaden mrm@cisco.com / rework API, use ACE facilities
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-
-#define INCLUDE_SNMP_ERR_STRINGS_
-
-//----[ snmp++ includes ]----------------------------------------------
-#include "asnmp/snmp.h" // class def for this module
-#include "asnmp/oid.h" // class def for oids
-#include "asnmp/enttraps.h" // class def for well known trap oids
-#include "asnmp/vb.h" // class def for vbs
-#include "asnmp/address.h" // class def for addresses
-#include "asnmp/wpdu.h" // adapter to cmu_library / wire protocol
-#include "asnmp/transaction.h" // synchronous transaction processor
-#include "ace/OS_NS_string.h"
-#include "ace/OS_NS_unistd.h"
-#include "ace/OS_NS_time.h"
-
-ACE_RCSID(asnmp, snmp, "$Id$")
-
-const coldStartOid coldStart;
-const warmStartOid warmStart;
-const linkDownOid linkDown;
-const linkUpOid linkUp;
-const authenticationFailureOid authenticationFailure;
-const egpNeighborLossOid egpNeighborLoss;
-const snmpTrapEnterpriseOid snmpTrapEnterprise;
-
-char Snmp::host_name_[MAXHOSTNAMELEN] = "";
-
-Snmp::Snmp(unsigned short port): result_(0), construct_status_(SNMP_CLASS_ERROR), last_transaction_status_(0)
-{
- ACE_TRACE("Snmp::Snmp");
-
- ACE_INET_Addr addr(port); // any port,address is ok
- if (iv_snmp_session_.open(addr) < 0) {
- last_transaction_status_ = errno; // open udp/ipv4 socket
- ACE_DEBUG((LM_DEBUG, "Snmp::snmp::open port %d failed", port));
- return;
- }
-
- // initial request id randomly generated then monotonically incremented
- req_id_ = (unsigned) ACE_OS::time(0);
-
- construct_status_ = SNMP_CLASS_SUCCESS;
- return;
-}
-
-Snmp::~Snmp()
-{
- ACE_TRACE("Snmp::~Snmp");
- iv_snmp_session_.close();
-}
-
-int Snmp::valid() const
-{
- return construct_status_;
-}
-
-// given error code, return string definition
-// class version
-// static
-const char * Snmp::error_string(int last_transaction_status_)
-{
- ACE_TRACE("Snmp::error_string");
-
- return ((last_transaction_status_ < 0) ?
- ((last_transaction_status_ < MAX_NEG_ERROR)?
- nErrs[ abs(MAX_NEG_ERROR) + 1] : nErrs[abs(last_transaction_status_)]):
- ((last_transaction_status_ > MAX_POS_ERROR)?
- pErrs[MAX_POS_ERROR+1] : pErrs[last_transaction_status_]));
-}
-
-// instance version
-const char * Snmp::error_string()
-{
- return Snmp::error_string(last_transaction_status_);
-}
-
-void Snmp::check_default_port(UdpTarget& target, unsigned short port)
-{
- UdpAddress tmp;
- target.get_address(tmp);
- if (tmp.get_port() == 0) {
- tmp.set_port(port);
- target.set_address(tmp);
- }
-}
-
-int Snmp::run_transaction(Pdu& pdu, UdpTarget& target)
-{
- int rc, done = 0;
-
- // 1. set unique id to match this packet on return
- size_t hold_req_id = req_id_++;
- set_request_id(&pdu, hold_req_id);
-
- // 2. write request to agent
- transaction trans(pdu, target, iv_snmp_session_);
-
- // this call blocks while it attempts to retrieve agent response
- while (!done) {
- if ((rc = trans.run()) < 0) {
- last_transaction_status_ = rc;
- return rc;
- }
- else {
- trans.result(pdu);
- // verify this is the pdu we are after
- if (pdu.get_request_id() == hold_req_id)
- done = 1 ;
- }
- }
- return 0;
-}
-
-int Snmp::run_transaction(Pdu& pdu, UdpTarget& target, Snmp_Result * cb)
-{
- if (!cb)
- return run_transaction(pdu, target);
-
- // 1. set unique id to match this packet on return
- hold_req_id_ = req_id_++;
- set_request_id(&pdu, hold_req_id_);
- pdu_ = &pdu;
- result_ = cb;
-
- // 2. write request to agent
- transaction * trans = new transaction(pdu, target, iv_snmp_session_);
- return trans->run(this);
-}
-
-void Snmp::result(transaction *t, int rc)
-{
- t->result(*pdu_);
- // verify this is the pdu we are after
- if (pdu_->get_request_id() == hold_req_id_)
- {
- last_transaction_status_ = rc;
- delete t;
- result_->result(this, rc);
- }
- else
- {
- rc = t->run(this);
- if (rc < 0)
- {
- delete t;
- result_->result(this, rc);
- }
- }
-}
-
-int Snmp::validate_args(const Pdu& pdu, const UdpTarget& target) const
-{
- // 0. check object status
- if (construct_status_ != SNMP_CLASS_SUCCESS)
- return construct_status_;
-
- // 1. check args passed
- if ( !pdu.valid() || !target.valid() )
- return SNMP_INVALID_ARGS;
- return 0;
-}
-
-// SYNC API: write request to wire then wait for reply or timeout
-int Snmp::get( Pdu &pdu, UdpTarget &target, Snmp_Result * cb)
-{
- ACE_TRACE("Snmp::get");
- int rc;
- if ((rc = validate_args(pdu, target)) != 0)
- return rc;
-
- pdu.set_type( sNMP_PDU_GET);
- check_default_port(target);
- return run_transaction(pdu, target, cb);
-}
-
-int Snmp::get_next( Pdu &pdu, UdpTarget &target, Snmp_Result * cb)
-{
- ACE_TRACE("Snmp::get_next");
- int rc;
- if ((rc = validate_args(pdu, target)) != 0)
- return rc;
-
- pdu.set_type( sNMP_PDU_GETNEXT);
- check_default_port(target);
- return run_transaction(pdu, target, cb);
-}
-
-int Snmp::set( Pdu &pdu, UdpTarget &target, Snmp_Result * cb)
-{
- ACE_TRACE("Snmp::set");
- int rc;
- if ((rc = validate_args(pdu, target)) != 0)
- return rc;
-
- pdu.set_type( sNMP_PDU_SET);
- check_default_port(target);
- return run_transaction(pdu, target, cb);
-}
-
-// one way, best of luck, non-confirmed alert
-int Snmp::trap( Pdu &pdu, UdpTarget &target)
-{
- ACE_TRACE("Snmp::trap");
- int rc;
- if ((rc = validate_args(pdu, target)) != 0)
- return rc;
-
- pdu.set_type( sNMP_PDU_V1TRAP);
- check_default_port(target, DEF_TRAP_PORT);
-
- // 2. write request to agent
- transaction trans(pdu, target, iv_snmp_session_);
- if (trans.send() > 0) // expect number of bytes sent on
- return 0;
-
- last_transaction_status_ = SNMP_CLASS_INTERNAL_ERROR;
- return -1;
-}
-
-// Allow host name to be overriden. Supplying a null pointer or zero
-// length string removes the override.
-void Snmp::override_host_name(const char* name)
-{
- if (name)
- {
- ACE_OS::strncpy(host_name_, name, MAXHOSTNAMELEN);
- host_name_[MAXHOSTNAMELEN-1] = 0;
- }
- else {
- host_name_[0] = 0;
- }
-}
-
-// Returns the current host name in the supplied string.
-void Snmp::get_host_name(char* name, int len)
-{
- if (name)
- {
- if (ACE_OS::strlen(host_name_) > 0)
- {
- ACE_OS::strncpy(name, host_name_, len);
- name[len-1] = 0;
- }
- else
- {
- if (ACE_OS::hostname(name, len-1) == -1)
- name[0] = 0;
- }
- }
-}
-
-Snmp_Result::~Snmp_Result() {}
diff --git a/ASNMP/asnmp/snmp.h b/ASNMP/asnmp/snmp.h
deleted file mode 100644
index 5bae232baa0..00000000000
--- a/ASNMP/asnmp/snmp.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*-C++-*- */
-#ifndef SNMP_CLS_
-#define SNMP_CLS_
-//=============================================================================
-/**
- * @file snmp.h
- *
- * $Id$
- *
- * SNMP class defintion. The Snmp class provides an object oriented
- * approach to SNMP. The SNMP class is an encapsulation of SNMP
- * sessions, gets, sets, etc. The class manages all SNMP
- * resources and provides complete retry and timeout capability.
- *
- *
- * @author Peter E Mellquist design
- * @author first implementation Michael R. MacFaden port to ACE / use Reactor pattern
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "ace/Reactor.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/SOCK_Dgram.h"
-
-#include "asnmp/oid.h" // snmp++ oid class
-#include "asnmp/vb.h" // snbmp++ vb class
-#include "asnmp/target.h" // snmp++ target class
-#include "asnmp/pdu.h" // snmp++ pdu class
-#include "asnmp/snmperrs.h" // error macros and strings
-#include "asnmp/address.h" // snmp++ address class defs
-#include "asnmp/transaction_result.h"
-#include "asnmp/ASNMP_Export.h"
-
-class Snmp;
-class ASNMP_Export Snmp_Result
-{
- public:
- virtual ~Snmp_Result();
- virtual void result(Snmp *snmp, int result) = 0;
-};
-
-// Snmp session class - supports Version 1 operations in blocking mode
-/**
- * @class Snmp
- *
- * @brief Concrete class Snmp defined the session and interface to
- * communicate with another SNMP Version 1 agent
- */
-class ASNMP_Export Snmp : public transaction_result
-{
- Snmp_Result * result_;
- Pdu * pdu_;
- unsigned hold_req_id_;
-public:
- Snmp(unsigned short port = INADDR_ANY);
- virtual ~Snmp();
-
- /// retrieve data from a peer agent for a given list of oid values
- /// default port 161
- int get( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0);
-
- /**
- * retrieve data lexically adjacent to the oids specified in the pdu
- * from the peer agent
- * default port 161
- */
- int get_next( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0);
-
- /// set data in the agent from the list of oids in the pdu
- /// default port 161
- int set( Pdu &pdu, UdpTarget &target, Snmp_Result * cb = 0);
-
- /// send an SNMPv1 trap (unreliable) to a remote system (def port 162)
- int trap( Pdu &pdu, UdpTarget &target);
-
- /// status of object after construction
- int valid() const;
-
- /// given error code, return string reason
- static const char * error_string(int code);
-
- /// retrieve a reason string if any of the above commands fail
- const char * error_string();
-
- /// for async transaction results
- void result(transaction * t, int rc);
-
- /// allow the host name to be overriden
- static void override_host_name(const char* name);
-
- /// returns the overriden host name
- static void get_host_name(char* name, int len);
-
-protected:
- void check_default_port(UdpTarget& target,unsigned short port=DEF_AGENT_PORT);
- int run_transaction(Pdu& pdu, UdpTarget& target);
- int run_transaction(Pdu& pdu, UdpTarget& target, Snmp_Result * cb);
- int validate_args(const Pdu& pdu, const UdpTarget& target) const;
-
- Snmp(const Snmp&);
-
- /// io object
- ACE_SOCK_Dgram iv_snmp_session_;
-
- /// status of construction
- int construct_status_;
-
- /// result code from last transaction
- int last_transaction_status_;
-
- /// transaction request id
- unsigned req_id_;
-
- static char host_name_[MAXHOSTNAMELEN];
-};
-
-#endif //SNMP_CLS_
diff --git a/ASNMP/asnmp/snmperrs.h b/ASNMP/asnmp/snmperrs.h
deleted file mode 100644
index 7aafdc0619a..00000000000
--- a/ASNMP/asnmp/snmperrs.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/* -*-C++-*- */
-#ifndef SNMPERRS_H_
-#define SNMPERRS_H_
-//=============================================================================
-/**
- * @file snmperrs.h
- *
- * $Id$
- *
- * Definition of error macros and error strings
- *
- *
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-============================================================================*/
-
-
-//-------[ Positive ASNMP Error Return Codes ]------------------------------
-// These values are error status values from RFC 1905
-//
-// The values can be returned via Pdu::get_error_status()
-//
-#define SNMP_ERROR_SUCCESS 0 // Success Status
-#define SNMP_ERROR_TOO_BIG 1 // Pdu encoding too big
-#define SNMP_ERROR_NO_SUCH_NAME 2 // No such VB name, see error index
-#define SNMP_ERROR_BAD_VALUE 3 // Bad Vb
-#define SNMP_ERROR_READ_ONLY 4 // VB is read only, see error index
-#define SNMP_ERROR_GENERAL_VB_ERR 5 // General VB error, see error index
-#define SNMP_ERROR_NO_ACCESS 6 // No access to MIBs data
-#define SNMP_ERROR_WRONG_TYPE 7 // Requested type was incorrect
-#define SNMP_ERROR_WRONG_LENGTH 8 // Request Pdu has inccorect length
-#define SNMP_ERROR_WRONG_ENCODING 9 // Request Pdu has wrong encoding
-#define SNMP_ERROR_WRONG_VALUE 10 // Request Pdu has wrong value
-#define SNMP_ERROR_NO_CREATION 11 // Unable to create object specified
-#define SNMP_ERROR_INCONSIST_VAL 12 // Inconsistent value in request
-#define SNMP_ERROR_RESOURCE_UNAVAIL 13 // Resources unavailable
-#define SNMP_ERROR_COMITFAIL 14 // Unable to comit
-#define SNMP_ERROR_UNDO_FAIL 15 // Unable to undo
-#define SNMP_ERROR_AUTH_ERR 16 // Authentication failure
-#define SNMP_ERROR_NOT_WRITEABLE 17 // Mib Object not writeable
-#define SNMP_ERROR_INCONSIS_NAME 18 // Inconsistent naming used
-
-
-//-------[ Negative ASNMP Result/Error Return Codes ]-------------------
-
-// General
-#define SNMP_CLASS_SUCCESS 0 // success
-#define SNMP_CLASS_ERROR -1 // general error
-#define SNMP_CLASS_RESOURCE_UNAVAIL -2 // e.g., malloc failed
-#define SNMP_CLASS_INTERNAL_ERROR -3 // unexpected / internal error
-#define SNMP_CLASS_UNSUPPORTED -4 // unsupported function
-
-// Callback reasons:
-#define SNMP_CLASS_TIMEOUT -5 // outstanding request timed out
-#define SNMP_CLASS_ASYNC_RESPONSE -6 // received response for outstd request
-#define SNMP_CLASS_NOTIFICATION -7 // received notification (trap/inform)
-#define SNMP_CLASS_SESSION_DESTROYED -8 // snmp::destroyed with oustanding reqs pending
-
-// Snmp Class:
-#define SNMP_CLASS_INVALID -10 // snmp::mf called on invalid instance
-#define SNMP_CLASS_INVALID_PDU -11 // invalid pdu passed to mf
-#define SNMP_CLASS_INVALID_TARGET -12 // invalid target passed to mf
-#define SNMP_CLASS_INVALID_CALLBACK -13 // invalid callback to mf
-#define SNMP_CLASS_INVALID_REQID -14 // invalid request id to cancel
-#define SNMP_CLASS_INVALID_NOTIFYID -15 // missing trap/inform oid
-#define SNMP_CLASS_INVALID_OPERATION -16 // snmp operation not allowed for specified target
-#define SNMP_CLASS_INVALID_OID -17 // invalid oid passed to mf
-#define SNMP_CLASS_INVALID_ADDRESS -18 // invalid address passed to mf
-#define SNMP_CLASS_ERR_STATUS_SET -19 // agent returned response pdu with error_status set
-
-// Transport Errors:
-#define SNMP_CLASS_TL_UNSUPPORTED -20 // transport unsupported
-#define SNMP_CLASS_TL_IN_USE -21 // transport in use
-#define SNMP_CLASS_TL_FAILED -22 // transport operation failed
-
-// extras
-#define SNMP_CLASS_SHUTDOWN -23 // used for back door shutdown
-#define SNMP_INVALID_ARGS -24 // invalid args passed
-
-#ifdef INCLUDE_SNMP_ERR_STRINGS_
-
-// ASCII strings returned through Snmp::error() function. NOTE: altering
-// the strings in this header file will not affect the return values of
-// Snmp::error(), unless you rebuild the ASNMP library from source.
-
-#define MAX_POS_ERROR SNMP_ERROR_INCONSIS_NAME
-#define MAX_NEG_ERROR SNMP_CLASS_SHUTDOWN
-
-static const char * pErrs[] = {
- "Success", // 0
- "SNMP: Response PDU Too Big", // 1
- "SNMP: Variable does not exist", // 2
- "SNMP: Cannot modify variable: Bad Value", // 3
- "SNMP: Cannot modify object, Read Only", // 4
- "SNMP: Cannot perform operation, General Error", // 5
- "SNMP: Cannot access variable, No Access", // 6
- "SNMP: Cannot create/modify variable, Wrong Type", // 7
- "SNMP: Cannot create/set variable, Wrong Length", // 8
- "SNMP: Cannot create/set variable, Wrong Encoding", // 9
- "SNMP: Cannot create/set variable, Wrong Value", // 10
- "SNMP: Cannot create variable, Creation Not Allowed", // 11
- "SNMP: Cannot create/set variable, Inconsistent Value", // 12
- "SNMP: Cannot create/set variable, Resource Unavailable", // 13
- "SNMP: Cannot create/set variable, Commit Failed", // 14
- "SNMP: Cannot create/set variable, Undo Failed", // 15
- "SNMP: Cannot perform operation, Authorization Error", // 16
- "SNMP: Cannot create/set variable, Not Writable", // 17
- "SNMP: Cannot create variable, Inconsistent Name", // 18
-};
-
-
-static const char * nErrs[] = {
- // General:
- // 0 SNMP_CLASS_SUCCESS
- "ASNMP: Success",
-
- // 1 SNMP_CLASS_ERROR
- "ASNMP: Operation failed",
-
- // 2 SNMP_CLASS_RESOURCE_UNAVAIL
- "ASNMP: Resource unavailable",
-
- // 3 SNMP_CLASS_INTERNAL_ERROR
- "ASNMP: Internal error",
-
- // 4 SNMP_CLASS_UNSUPPORTED
- "ASNMP: Unsupported function",
-
- // Callback reasons:
- // 5 SNMP_CLASS_TIMEOUT
- "ASNMP: SNMP request timed out",
-
- // 6 SNMP_CLASS_ASYNC_RESPONSE
- "ASNMP: Received SNMP Response",
-
- // 7 SNMP_CLASS_NOTIFICATION
- "ASNMP: Received SNMP Notification (trap or inform)",
-
- // 8 SNMP_CLASS_SESSION_DESTROYED
- "ASNMP: Closing session with outstanding requests",
-
- // 9 reserved for future
- "Unknown error code",
-
- // Snmp Class errors:
- // 10 SNMP_CLASS_INVALID
- "ASNMP: Class not valid",
-
- // 11 SNMP_CLASS_INVALID_PDU
- "ASNMP: Invalid Pdu",
-
- // 12 SNMP_CLASS_INVALID_TARGET
- "ASNMP: Invalid Target",
-
- // 13 SNMP_CLASS_INVALID_CALLBACK
- "ASNMP: Invalid (null) Callback Function",
-
- // 14 SNMP_CLASS_INVALID_REQID
- "ASNMP: Invalid Request Id",
-
- // 15 SNMP_CLASS_INVALID_NOTIFYID
- "ASNMP: Invalid Notification Id",
-
- // 16 SNMP_CLASS_INVALID_OPERATION
- "ASNMP: SNMP Operation not supported on specified Target",
-
- // 17 SNMP_CLASS_INVALID_OID
- "ASNMP: Invalid Object Identifier",
-
- // 18 SNMP_CLASS_INVALID_ADDRESS
- "ASNMP: Invalid Address",
-
- // 19 SNMP_CLASS_ERR_STATUS_SET
- "ASNMP: Agent indicates error in SNMP request",
-
- // Transport Errors:
- // 20 SNMP_CLASS_TL_UNSUPPORTED
- "ASNMP: Transport is not supported",
-
- // 21 SNMP_CLASS_TL_IN_USE
- "ASNMP: Transport is in use",
-
- // 22 SNMP_CLASS_TL_FAILED
- "ASNMP: Transport operation failed",
-
- // 23 SNMP_CLASS_SHUTDOWN
- "ASNMP: Blocked Mode Shutdown",
-
- // unknown error code
- "Unknown error code",
-};
-
-#endif //INCLUDE_SNMP_ERR_STRINGS_
-
-#endif //SNMPERRS_H_
diff --git a/ASNMP/asnmp/target.cpp b/ASNMP/asnmp/target.cpp
deleted file mode 100644
index 7c93a9275f9..00000000000
--- a/ASNMP/asnmp/target.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// target.cpp
-//
-// = DESCRIPTION
-// Target class defines target SNMP agents.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
- =====================================================================*/
-
-#include "asnmp/target.h"
-
-ACE_RCSID(asnmp, target, "$Id$")
-
-//----------------------------------------------------------------------
-//--------[ Class default values ]----------------------
-//----------------------------------------------------------------------
-u_long SnmpTarget::default_timeout_ = DEF_TIMEOUT;
-int SnmpTarget::default_retries_ = DEF_RETRIES;
-u_long SnmpTarget::default_max_pdu_size_ = DEF_MAX_SNMP_PACKET;
-snmp_version SnmpTarget::default_version_ = version1;
-
-OctetStr UdpTarget::default_rd_community_(READ_COMM_STR);
-OctetStr UdpTarget::default_wr_community_(WRITE_COMM_STR);
-
-//----------------------------------------------------------------------
-//--------[ Abstract SnmpTarget Member Functions ]----------------------
-//----------------------------------------------------------------------
-SnmpTarget::SnmpTarget():
- validity_(0), timeout_(default_timeout_), retries_(default_retries_),
- max_pdu_size_(default_max_pdu_size_), version_(default_version_)
-{
-}
-
-// return validity of target
-int SnmpTarget::valid() const
-{
- return validity_;
-}
-
-// allow destruction of derived classes
-SnmpTarget::~SnmpTarget()
-{
-}
-
-// set the timeout
-void SnmpTarget::set_timeout( const u_long t)
-{
- timeout_ = t;
-}
-
-// change the default timeout
-void SnmpTarget::set_default_timeout( const u_long t)
-{
- default_timeout_ = t;
-}
-
-// set the retry value
-void SnmpTarget::set_retry( const int r)
-{
- retries_ = r;
-}
-
-// change the default retries
-void SnmpTarget::set_default_retry( const int r)
-{
- default_retries_ = r;
-}
-
-void SnmpTarget:: set_max_pdu_size(const u_long max_pdu_sz)
-{
- max_pdu_size_ = max_pdu_sz;
-}
-
-
-void SnmpTarget::set_default_max_pdu_size(const u_long max_pdu_sz)
-{
- default_max_pdu_size_ = max_pdu_sz;
-}
-
-void SnmpTarget::set_version( const snmp_version v)
-{
- version_ = v;
-}
-
-void SnmpTarget::set_default_version( const snmp_version v)
-{
- default_version_ = v;
-}
-
-snmp_version SnmpTarget::get_version() const
-{
- return version_;
-}
-
-snmp_version SnmpTarget::get_default_version() const
-{
- return default_version_;
-}
-
-u_long SnmpTarget::get_max_pdu_size() const
-{
- return max_pdu_size_;
-}
-
-// get the retry value
-int SnmpTarget::get_retry() const
-{
- return retries_;
-}
-
-// get the retry value
-int SnmpTarget::get_default_retry() const
-{
- return default_retries_;
-}
-
-// get the timeout
-u_long SnmpTarget::get_timeout() const
-{
- return timeout_;
-}
-
-SnmpTarget& SnmpTarget::operator=(const SnmpTarget& lhs)
-{
- if (this == &lhs)
- return *this;
-
- validity_ = lhs.validity_;
- timeout_ = lhs.timeout_;
- retries_ = lhs.retries_;
- max_pdu_size_ =lhs.max_pdu_size_;
- version_ = lhs.version_;
- return *this;
-}
-
-bool operator==(const SnmpTarget& lhs, const SnmpTarget& rhs)
-{
- if (lhs.timeout_ != rhs.timeout_)
- return false;
-
- if (lhs.retries_ != rhs.retries_)
- return false;
-
- if (lhs.max_pdu_size_ != rhs.max_pdu_size_)
- return false;
-
- if (lhs.version_ != rhs.version_)
- return false;
-
- return true;
-}
-
-
-//----------------------------------------------------------------------
-//--------[ IpTarget Member Functions ]----------------------------------
-//----------------------------------------------------------------------
-
-
-//---------[ UdpTarget::UdpTarget( void) ]----------------------------------
-
-UdpTarget::UdpTarget()
-{
- validity_ = 0;
- read_community_ = default_rd_community_; // assign by init fails
- write_community_ = default_wr_community_;
-}
-
-UdpTarget::UdpTarget(const UdpAddress& udp) : udp_address_(udp)
-{
- if (udp_address_.valid())
- validity_ = 1;
- read_community_ = default_rd_community_;
- write_community_ = default_wr_community_;
-}
-
-// - copy constructor can be synthesised by compiler
-
-//-----------[ UdpTarget::~UdpTarget() ]--------------------------------
-UdpTarget::~UdpTarget()
-{
-}
-
-//-----------[ UdpTarget::clone() ]--------------------------------
-SnmpTarget * UdpTarget::clone() const
-{
- return (SnmpTarget *) new UdpTarget(*this);
-}
-
-
-void UdpTarget::set_default_read_community(const OctetStr& rd_community)
-{
- default_rd_community_ = rd_community;
-}
-
-void UdpTarget::set_default_write_community(const OctetStr& wr_community)
-{
- default_wr_community_ = wr_community;
-}
-
-
-// get the read community name as an u_char and len
-void UdpTarget::get_read_community( OctetStr& read_community_oct) const
-{
- read_community_oct = read_community_;
-}
-
-//---------[ UdpTarget::set_getcommunity ]---------------------------------
-// set the read community name
-void UdpTarget::set_read_community( const OctetStr& new_read_community)
-{
- read_community_ = new_read_community;
-}
-
-//---------[ UdpTarget::get_writecommunity ]----------------------------
-// get the write community
-void UdpTarget::get_write_community( OctetStr &write_community_oct) const
-{
- write_community_oct = write_community_;
-}
-
-//-----------[ UdpTarget::set_writecommunity ]---------------------------
-// set the write community
-void UdpTarget::set_write_community( const OctetStr& write_community_oct)
-{
- write_community_ = write_community_oct;
-}
-
-//------------[ Address& UdpTarget::get_address() ]---------------------
-// get the address
-void UdpTarget::get_address( UdpAddress &address) const
-{
- address = udp_address_;
- return;
-}
-
-//-------------[ UdpTarget::set_address ]--------------------------------
-// set the address
-int UdpTarget::set_address( UdpAddress &udp_address)
-{
- udp_address_ = udp_address;
- if ( udp_address_.valid())
- validity_ = 1;
- else
- validity_ = 0;
-
- return validity_;
-}
-
-// overloaded assignment
-UdpTarget& UdpTarget::operator=( const UdpTarget& lhs)
-{
- if (this == &lhs)
- return *this;
-
- // assign base part
- *((SnmpTarget *) this) = *((SnmpTarget *)&lhs);
-
- udp_address_ = lhs.udp_address_;
- read_community_ = lhs.read_community_;
- write_community_ = lhs.write_community_;
- validity_ = lhs.validity_;
-
- return *this;
-}
-
-const char *UdpTarget::to_string()
-{
- sprintf(output_buffer_,"UdpTarget: [ valid: %d addr: %s rd: %s wr: %s \
-ver: %d, timeout: %d, retries: %d max_pdu_size: %d]",
- valid(), udp_address_.to_string(), read_community_.to_string(),
- write_community_.to_string(), version_, (int) timeout_,
- retries_, max_pdu_size_);
- return output_buffer_;
-}
-
-//=============[ int operator == UdpTarget, UdpTarget ]===============
-// equivlence operator overloaded
-bool operator==( const UdpTarget &lhs,const UdpTarget &rhs)
-{
- // need to compare all the members of a UdpTarget
- if ( lhs.read_community_ != rhs.read_community_)
- return false; // !=
-
- if ( lhs.write_community_ != rhs.write_community_)
- return false; // !=
-
- if ( lhs.udp_address_ != rhs.udp_address_)
- return false;
-
- if ( lhs.timeout_ != rhs.timeout_)
- return false;
-
- if ( lhs.retries_ != rhs.retries_)
- return false;
-
- return true; // they are equal
-}
diff --git a/ASNMP/asnmp/target.h b/ASNMP/asnmp/target.h
deleted file mode 100644
index 084088e5f4f..00000000000
--- a/ASNMP/asnmp/target.h
+++ /dev/null
@@ -1,260 +0,0 @@
-
-
-#ifndef TARGET_
-#define TARGET_
-//=============================================================================
-/**
- * @file target.h
- *
- * $Id$
- *
- * @brief
- *
- * @author Peter E Mellquist Michael R. MacFaden (ported to ACE)
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS" without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----[ includes ]------------------------------------------------
-#include "ace/INET_Addr.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/address.h"
-#include "asnmp/oid.h"
-#include "asnmp/octet.h"
-
-//----[ enumerated types for SNMP versions ]-------------------------
-enum snmp_version {
- version1, // 0
- version2c, // 1 (Cisco IOS does not have IOS v2c agent available yet)
- version3 // 2 (IETF working on this version)
-};
-
-// targets contain the following default properties
-enum ASNMP_Defs {
- DEF_TIMEOUT = 1, // unit: seconds
- DEF_RETRIES = 1, // no retry default
- DEF_MAX_SNMP_PACKET = 1430, // maximum pdu len on the wire (eth mtu-ip hdr)
- // split bigger pdus (not implemented yet)
- DEF_AGENT_PORT = 161, // port # for SNMP agent
- DEF_TRAP_PORT = 162, // port # for SNMP trap receiver
- DEF_VERSION = version1, // default SNMP version
- MAX_COMM_STR_LEN = 255, // max value this impl will accept from client
- MAX_TARGET_STRING_REP = 2048 // max value this impl will accept from client
-};
-
-#define READ_COMM_STR "public"
-#define WRITE_COMM_STR "private"
-
-// Abstract class used to provide a virtual interface into Targets
-//
-/**
- * @class SnmpTarget
- *
- * @brief Abstract Base class SnmpTarget is used to Collect all transmission
- * details to communicate with an SNMP
- */
-class ASNMP_Export SnmpTarget
-{
- public:
-
- /// allow destruction of derived classes
- virtual ~SnmpTarget();
-
- /// return validity of target
- int valid() const;
-
- /// set the retry value
- void set_retry( const int r);
-
- /// set the object's timeout (in seconds)
- void set_timeout( const unsigned long t);
-
- /// set the instance version
- void set_version( const snmp_version v);
-
- /// all classes constructed will have this write community string
- void set_max_pdu_size(const unsigned long max_pdu_sz);
-
- /// change the "class" default default timeout (in seconds)
- void set_default_timeout( const unsigned long t);
-
- /// change the default send retries
- void set_default_retry( const int r);
-
- /// all classes constructed will have this write community string
- void set_default_max_pdu_size(const unsigned long max_pdu_sz);
-
- /// change class default
- void set_default_version( const snmp_version v);
-
- // *** get methods ***
-
- /// get the retry value
- int get_default_retry() const;
-
- /// get the timeout (seconds)
- unsigned long get_timeout() const;
-
- /// get instance max buffer size
- unsigned long get_max_pdu_size() const;
-
- /// all classes constructed will have this write community string
- void get_default_max_pdu_size(const unsigned long max_pdu_sz);
-
- /// get the version
- snmp_version get_version() const;
-
- snmp_version get_default_version() const;
-
- /// return send retry number for this instancd
- int get_retry() const;
-
- /**
- * virtual clone operation for creating a new SnmpTarget from an existing
- * SnmpTarget. The caller MUST use the delete operation on the return
- * value when done.
- */
- virtual SnmpTarget *clone() const = 0;
-
- /// manipulate the base part
- friend bool operator==(const SnmpTarget& lhs, const SnmpTarget& rhs);
-
- SnmpTarget& operator=(const SnmpTarget& lhs);
-
- protected:
- /// SnmpTarget(const SnmpTarget &);
- SnmpTarget();
-
- /// used by derived class instances
- int validity_;
-
- /// instance value xmit timeout in milli secs
- unsigned long timeout_;
-
- /// instance value number of retries
- int retries_;
-
- /// size of pdu
- unsigned max_pdu_size_;
-
- /// instance value the snmp version
- snmp_version version_;
-
- // class wide default values
- /// xmit timeout in secs
- static unsigned long default_timeout_;
-
- /// number of retries
- static int default_retries_;
-
- /// snmp protocol version
- static unsigned long default_max_pdu_size_;
- static snmp_version default_version_;
-};
-
-//----[ UdpTarget class ]----------------------------------------------
-// UDP/IP transport using "community string" based agents (targets)
-//
-/**
- * @class UdpTarget
- *
- * @brief Concrete class UdpTarget contains all Details for communicating
- * with a SNMPv1 agent over UDP/IPv4 transport
- */
-class ASNMP_Export UdpTarget : public SnmpTarget
-{
- public:
- UdpTarget();
-
- /**
- * constructor with only address
- * assumes default as public, public
- * can be constructed with IP address object
- */
- UdpTarget( const UdpAddress& udp);
-
- /// can be constructed with Udp address object TODO: merge addresses
- UdpTarget( ACE_INET_Addr& ace_inet_addr);
-
- /// destructor
- ~UdpTarget();
-
- // ** set ***
-
- /// set the read community using an OctetStr
- void set_read_community( const OctetStr& new_read_community);
-
- /// set the write community using an OctetStr
- void set_write_community( const OctetStr& write_community);
-
- /// set the address
- int set_address( UdpAddress &udp_address);
-
- // ** get ***
-
- /// get the read community as an Octet Str object
- void get_read_community( OctetStr& read_community_oct) const;
-
- /// get the write community as an OctetStr
- void get_write_community( OctetStr &write_community_oct) const;
-
- /// get the address
- void get_address( UdpAddress& address) const;
-
- /// all classes constructed will have this read community string
- void set_default_read_community(const OctetStr& rd_community);
-
- /// all classes constructed will have this write community string
- void set_default_write_community(const OctetStr& wr_community);
-
- /// all classes constructed will have this read community string
- void get_default_read_community(OctetStr& rd_community) const;
-
- /// all classes constructed will have this write community string
- void get_default_write_community(OctetStr& wr_community) const;
-
- /// overloaded assignment
- UdpTarget& operator=( const UdpTarget& target);
-
- /// compare two C targets
- friend bool operator==( const UdpTarget &lhs, const UdpTarget &rhs);
-
- /// string representation of object
- const char *to_string();
-
- /// clone from existing UdpTarget
- SnmpTarget *clone() const;
-
- protected:
- static OctetStr default_rd_community_;
- static OctetStr default_wr_community_;
- OctetStr read_community_;
- OctetStr write_community_;
- UdpAddress udp_address_;
- snmp_version version_;
-
- /// to_string() rep of data
- char output_buffer_[MAX_TARGET_STRING_REP];
-};
-
-
-#endif //TARGET_
diff --git a/ASNMP/asnmp/timetick.cpp b/ASNMP/asnmp/timetick.cpp
deleted file mode 100644
index e6b2d0d2231..00000000000
--- a/ASNMP/asnmp/timetick.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// timetick.cpp
-//
-// = DESCRIPTION
-// Class implentation for SMI Timeticks class.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/timetick.h" // include header file for timetick class
-#include "ace/OS_NS_stdio.h"
-
-ACE_RCSID(asnmp, timetick, "$Id$")
-
-// constructor with a value
-TimeTicks::TimeTicks( const unsigned long i):SnmpUInt32(i)
-{
- smival.syntax = sNMP_SYNTAX_TIMETICKS;
-}
-
-// copy constructor
-TimeTicks::TimeTicks( const TimeTicks &t)
- : SnmpUInt32 (t)
-{
- smival.value.uNumber = t.smival.value.uNumber;
- smival.syntax = sNMP_SYNTAX_TIMETICKS;
-}
-
-// destructor
-TimeTicks::~TimeTicks()
-{
-}
-
-// syntax type
-SmiUINT32 TimeTicks::get_syntax()
-{
- return sNMP_SYNTAX_TIMETICKS;
-}
-
-// create a new instance of this Value
-SnmpSyntax *TimeTicks::clone() const
-{
- return (SnmpSyntax *) new TimeTicks(*this);
-}
-
-// overloaded assignement from ulong
-TimeTicks& TimeTicks::operator=( const unsigned long int i)
-{
- smival.value.uNumber =i; return *this;
-}
-
-// overloaded assignment from TimeTicks
-TimeTicks& TimeTicks::operator=( const TimeTicks &uli)
-{
- this->smival.value.uNumber = uli.smival.value.uNumber; return *this;
-}
-
-// general assignment from any Value
-SnmpSyntax& TimeTicks::operator=( SnmpSyntax &in_val)
-{
- if ( this == &in_val ) // handle assignement from itself
- return *this;
-
- valid_flag = 0; // will get set true if really valid
- if (in_val.valid()) {
- switch (in_val.get_syntax()) {
- case sNMP_SYNTAX_UINT32:
- // case sNMP_SYNTAX_GAUGE32: .. indistinquishable from UINT32
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- case sNMP_SYNTAX_INT32: // implied cast int -> uint
- this->smival.value.uNumber =
- ((TimeTicks &)in_val).smival.value.uNumber;
- valid_flag = 1;
- break;
- }
- }
- return *this;
-}
-
-// otherwise, behave like an unsigned long
-TimeTicks::operator unsigned long()
-{
- return smival.value.uNumber;
-}
-
-
-// ASCII format return
-const char * TimeTicks::to_string()
- /* Should do something nicer like days:hours:minutes... */
-{
- unsigned long tt, hseconds, seconds, minutes, hours, days;
- tt = this->smival.value.uNumber;
-
- // days
- days = tt / 8640000;
- tt %= 8640000;
-
- // hours
- hours = tt / 360000;
- tt %= 360000;
-
- // minutes
- minutes = tt / 6000;
- tt %= 6000;
-
- seconds = tt / 100;
- tt %= 100;
-
- hseconds = tt;
-
- if ( days ==0)
- sprintf( output_buffer,"%ld:%02ld:%02ld.%02ld", hours, minutes,seconds,hseconds);
- else if ( days==1)
- sprintf( output_buffer,"1 day %ld:%02ld:%02ld.%02ld", hours, minutes,seconds,hseconds);
- else
- sprintf( output_buffer,"%ld days, %ld:%02ld:%02ld.%02ld", days,hours, minutes,seconds,hseconds);
-
- return output_buffer;
-}
diff --git a/ASNMP/asnmp/timetick.h b/ASNMP/asnmp/timetick.h
deleted file mode 100644
index ca52a3e1d9d..00000000000
--- a/ASNMP/asnmp/timetick.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*-C++-*- */
-#ifndef TIMETICKS_
-#define TIMETICKS_
-//=============================================================================
-/**
- * @file timetick.h
- *
- * $Id$
- *
- * Class definition for SMI Timeticks class.
- *
- *
- * @author Michael R. MacFaden <mrm@cisco.com>
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/integer.h"
-
-#define TICKOUTBUF 30 // max formatted time string
-
-//------------[ TimeTicks Class ]-----------------------------------
-// The timeticks class allows all the functionality of unsigned
-// integers but is recognized as a distinct SMI type. TimeTicks
-// objects may be get or set into Vb objects.
-//
-/**
- * @class TimeTicks
- *
- * @brief Define RFC1155 TimeTicks Data object
- */
-class ASNMP_Export TimeTicks : public SnmpUInt32
-
-{
-
- public:
- TimeTicks( const unsigned long i = 0);
-
- /// copy constructor
- TimeTicks( const TimeTicks &t);
-
- /// destructor
- ~TimeTicks();
-
- /// syntax type
- SmiUINT32 get_syntax();
-
- /// get a printable ASCII value
- const char *to_string();
-
- /// create a new instance of this Value
- SnmpSyntax *clone() const;
-
- /// copy an instance of this Value
- SnmpSyntax& operator=(SnmpSyntax &val);
-
- /// overloaded assignment
- TimeTicks& operator=( const TimeTicks &uli);
-
- /// overloaded assignment
- TimeTicks& operator=( const unsigned long int i);
-
- /// otherwise, behave like an unsigned long
- operator unsigned long();
-
- protected:
- /// for storing printed form
- char output_buffer[TICKOUTBUF];
-};
-#endif // TIMETICKS_
diff --git a/ASNMP/asnmp/transaction.cpp b/ASNMP/asnmp/transaction.cpp
deleted file mode 100644
index 2f29cf79544..00000000000
--- a/ASNMP/asnmp/transaction.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// transaction.cpp
-//
-// = DESCRIPTION
-// implements blocking SNMPv1 API using a simple state machine
-// transactions over UDP/IP networks
-//
-// = AUTHOR
-// Michael R MacFaden mrm@cisco.com - remove v2c, async, rework for ACE
-// ============================================================================
-
-#include "ace/Reactor.h"
-#include "asnmp/transaction.h"
-#include "ace/OS_NS_string.h"
-
-ACE_RCSID(asnmp, transaction, "$Id$")
-
-// pre: pdu, target report valid() == 1
-// post: pdu sent out over the wire
-inline void reset_receive_buffer(iovec& io)
-{
- io.iov_base = 0;
- io.iov_len = 0;
-}
-
-transaction::transaction(const Pdu& pdu, const UdpTarget& target,
- ACE_SOCK_Dgram& io):
- result_(0),
- wp_(pdu,target), params_(target), session_(io)
-{
- // last step, convert address (get ride of this once we have merged address
- UdpAddress udp;
- target.get_address(udp);
- // via string conversion "dotted-quad:port"
- ACE_INET_Addr tmp(udp);
- addr_ = tmp;
- reset_receive_buffer(receive_iovec_);
-}
-
-transaction::~transaction()
-{
- ACE_Reactor::instance()->remove_handler(this, READ_MASK | DONT_CALL);
- ACE_Reactor::instance()->cancel_timer(this);
-
- delete [] (char *) receive_iovec_.iov_base;
-}
-
-// implement state machine, send, wait (timeout/results) return
-int transaction::run()
-{
- int rc, done = 0;
- int retry_counter = 0;
- ACE_Time_Value to(params_.get_timeout(), 0); // seconds
- ACE_Reactor *reactor = ACE_Reactor::instance ();
-
- // 1. register io port for read access
- if (reactor->register_handler(session_.get_handle(), this,
- ACE_Event_Handler::READ_MASK) == -1)
- return SNMP_CLASS_INTERNAL_ERROR;
-
- // register a time handler and a socket with this
-
- while (!done) {
-
- if ((rc = send()) < 0) // send pkt to agent
- return rc;
- else {
- if (retry_counter++ > params_.get_retry())
- return SNMP_CLASS_TIMEOUT;
- }
-
- // 2. wait for events (timeout, returned msg)
- if (( rc = reactor->handle_events (to)) == 1) // one handler registered
- return 0;
- else {
- if (rc == 0) {
- to.set(params_.get_timeout(), 0);
- }
- else
- return SNMP_CLASS_INTERNAL_ERROR;
- }
- }
- return SNMP_CLASS_INTERNAL_ERROR;
-}
-
-// implement state machine, send, wait (timeout/results) return
-int transaction::run(transaction_result * r)
-{
- result_ = r;
- int rc;
-
- // 1. register io port for read access
- ACE_Reactor * reactor = ACE_Reactor::instance();
- if (reactor->register_handler(session_.get_handle(),
- this,
- READ_MASK) == -1)
- return SNMP_CLASS_INTERNAL_ERROR;
-
- retry_counter_ = 0;
-
- // register a time handler and a socket with this
- ACE_Time_Value to (params_.get_timeout());
- if (reactor->schedule_timer(this, 0, to, to) < 0)
- return SNMP_CLASS_INTERNAL_ERROR;
-
- if ((rc = send()) < 0) // send pkt to agent
- return rc;
- return 0;
-}
-
-// got back response from SNMPv1 agent - process it
-int transaction::handle_input (ACE_HANDLE)
-{
- // OS allocates iovec_.iov_base ptr and len
- delete [] (char*) receive_iovec_.iov_base;
- reset_receive_buffer(receive_iovec_);
- int rc = session_.recv(&receive_iovec_, receive_addr_, 0);
- if (rc == -1)
- {
- delete [] (char*) receive_iovec_.iov_base;
- reset_receive_buffer(receive_iovec_);
- if (result_)
- result_->result(this, SNMP_CLASS_RESOURCE_UNAVAIL);
- return SNMP_CLASS_RESOURCE_UNAVAIL;
- }
- if (result_)
- result_->result(this, rc);
-
- return 0;
-}
-
-int transaction::handle_timeout(const ACE_Time_Value &,
- const void *)
-{
- if (send() < 0) // send pkt to agent
- result_->result(this, 0);
- else
- if (retry_counter_++ > params_.get_retry())
- result_->result(this, SNMP_CLASS_TIMEOUT);
-
- return 0;
-}
-
-
-const ACE_INET_Addr& transaction::get_from_addr() const
-{
- return receive_addr_;
-}
-
-
-// return pdu to caller
-int transaction::result(Pdu& pdu, char *comm_str, ACE_INET_Addr *from)
-{
- // TODO: check to see the sender matches the receiver address..
-
- // remove any vbs existing in this pdu
- pdu.delete_all_vbs();
-
- // any data to return?
- if (receive_iovec_.iov_len == 0)
- return -1;
-
- wpdu tmp(receive_iovec_);
-
- snmp_version ver;
-
- // return comm str and from address of incomming pdu if requested
- int rc = tmp.get_pdu(pdu, ver);
- if (comm_str)
- ACE_OS::strcpy(comm_str, (char *)tmp.get_community());
- if (from)
- *from = receive_addr_;
- return rc;
-}
-
-transaction::transaction(ACE_SOCK_Dgram& io)
-: result_(0), session_(io)
-{
- reset_receive_buffer(receive_iovec_);
-}
-
-
-int transaction::send()
-{
- iovec io = wp_.get_buffer();
- if (io.iov_len == 0) {
- // NO DATA ?
- return -1;
- }
- ssize_t rc = session_.send (io.iov_base, io.iov_len, addr_ , 0);
- return rc;
-}
-
-transaction_result::~transaction_result() {}
-
-ACE_HANDLE
-transaction::get_handle () const
-{
- return session_.get_handle ();
-}
diff --git a/ASNMP/asnmp/transaction.h b/ASNMP/asnmp/transaction.h
deleted file mode 100644
index d114bd40d1f..00000000000
--- a/ASNMP/asnmp/transaction.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*-C++-*- */
-#ifndef TRANSACTION_
-#define TRANSACTION_
-//=============================================================================
-/**
- * @file transaction.h
- *
- * $Id$
- *
- * @brief
- *
- * @author Michael R. MacFaden port to ACE / use Reactor pattern
- */
-//=============================================================================
-
-
-#include "ace/Event_Handler.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/target.h"
-#include "asnmp/pdu.h"
-#include "asnmp/transaction_result.h"
-#include "asnmp/wpdu.h" // cmu adapter class
-#include "ace/SOCK_Dgram.h"
-
-/**
- * @class transaction
- *
- * @brief Used to manage the details of a particular transaction betwen
- * two SNMP agents. Uses SnmpTarget class to implement retry/timeout
- */
-class ASNMP_Export transaction : public ACE_Event_Handler
-
-{
- int retry_counter_;
- transaction_result * result_;
-
-public:
- /// constructor
- /// destructor
- transaction(const Pdu& pdu, const UdpTarget& target, ACE_SOCK_Dgram& io);
- transaction(ACE_SOCK_Dgram& io);
- ~transaction();
-
- /// begin polling for values
- int run();
- int run(transaction_result *r); // Async interface, with callback object
-
- /// return pdu with result from agent after run() is completed rc = 0
- /// optionally get community str
- int result(Pdu& pdu, char *comm_str = 0, ACE_INET_Addr *from_addr = 0);
-
- /// called by reactor when data is ready to be read in from OS memory
- /// used for resend in asynchronous run()
- virtual int handle_input (ACE_HANDLE fd);
- virtual int handle_timeout (const ACE_Time_Value &, const void *);
-
- /// transmit buffer command to network...
- int send();
-
- /// pre: handle_input called
- /// retrieve the sender's from address from the last pkt
- const ACE_INET_Addr& get_from_addr() const;
-
- /// Return session_ handle.
- ACE_HANDLE get_handle () const;
-
-private:
- /// disallow copy construction
- transaction(const transaction&);
-
- wpdu wp_; // wire pdu
- UdpTarget params_; // params
- ACE_INET_Addr addr_; // to address
- ACE_SOCK_Dgram session_; // io object
- iovec receive_iovec_; // receive buffer
- ACE_INET_Addr receive_addr_; // from address
-};
-
-#endif // TRANSACTION_
diff --git a/ASNMP/asnmp/transaction_result.h b/ASNMP/asnmp/transaction_result.h
deleted file mode 100644
index 9ea94c60e8e..00000000000
--- a/ASNMP/asnmp/transaction_result.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*-C++-*- */
-#ifndef TRANSACTION_RESULT_H_
-#define TRANSACTION_RESULT_H_
-//=============================================================================
-/**
- * @file transaction_result.h
- *
- * $Id$
- *
- * An object respresenting a request/reply operation between mgr/agent
- *
- *
- * @author Michael R. MacFaden
- */
-//=============================================================================
-
-
-class transaction;
-class ASNMP_Export transaction_result
-{
- public:
- virtual ~transaction_result();
- virtual void result(transaction * trans, int) = 0;
-};
-
-#endif
diff --git a/ASNMP/asnmp/vb.cpp b/ASNMP/asnmp/vb.cpp
deleted file mode 100644
index 4e94b5e81b9..00000000000
--- a/ASNMP/asnmp/vb.cpp
+++ /dev/null
@@ -1,399 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// vb.h
-//
-// = DESCRIPTION
-// The Vb class is an encapsulation of the snmp variable binding.
-// This module contains the class definition for the variable binding (VB)
-// class. The VB class is an encapsulation of a SNMP VB. A VB object is
-// composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid
-// objects and thus requires the Oid class. To use this class,
-// set oid, value then call valid() to be sure object was constructed correctly.
-//
-// = AUTHOR
-// Peter E Mellquist
-// Michael R MacFaden mrm@cisco.com - rework & ACE port
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/oid.h" // include oid class defs
-#include "asnmp/vb.h" // include vb class defs
-#include "asnmp/snmperrs.h" // error codes
-#include "ace/OS_NS_stdio.h"
-#include "ace/OS_NS_string.h"
-#include "ace/OS_Memory.h"
-
-ACE_RCSID(asnmp, vb, "$Id$")
-
-//---------------[ Vb::Vb( void) ]--------------------------------------
-// constructor with no arguments
-// makes an vb, unitialized
-Vb::Vb( void): output_(0), iv_vb_value_(0),
- exception_status_(SNMP_CLASS_SUCCESS)
-{
-}
-
-//---------------[ Vb::Vb( const Oid &oid) ]-----------------------------
-// constructor to initialize the oid
-// makes a vb with oid portion initialized
-Vb::Vb( const Oid &oid): output_(0), iv_vb_oid_(oid), iv_vb_value_(0),
- exception_status_(SNMP_CLASS_SUCCESS)
-{
-}
-
-//---------------[ Vb::Vb( const Oid &oid, const SmiSyntax &val) ]-------
-Vb::Vb( const Oid &oid, const SnmpSyntax &val, const SmiUINT32 status):
- output_(0), iv_vb_oid_(oid), iv_vb_value_(0), exception_status_(status)
-{
- // iv_vb_value_ = recast_smi_object(val); // allocate and construct object
- iv_vb_value_ = val.clone();
-}
-
-//---------------[ Vb::Vb( const Vb &vb) ]-----------------------------
-// copy constructor
-Vb::Vb( const Vb &vb): output_(0), iv_vb_value_(0)
-{
- *this = vb;
-}
-
-//---------------[ Vb::~Vb() ]------------------------------------------
-// destructor
-// if the vb has a oid or an octect string then
-// the associated memory needs to be freed
-Vb::~Vb()
-{
- free_vb();
- delete [] output_; // formatting buffer if it exists
-}
-
-
-//--------------[ Vb::valid() ]-----------------------------------------
-// returns validity of a Vb object
-// must have a valid oid and value
-int Vb::valid() const
-{
- if ( iv_vb_oid_.valid() && (iv_vb_value_ && iv_vb_value_->valid()) )
- return 1;
- else
- return 0;
-}
-
-
-//---------------[ Vb& Vb::operator=( const Vb &vb) ]--------------------
-// overloaded assignment allows assigning one Vb to another
-// this involves deep memory thus target vb needs to be freed
-// before assigning source
-Vb& Vb::operator=( const Vb &vb)
-{
- free_vb(); // free up target to begin with
-
- //-----[ reassign the Oid portion 1st ]
- vb.get_oid( iv_vb_oid_);
-
- //-----[ next set the vb value portion ]
- if (vb.iv_vb_value_ == 0) {
- iv_vb_value_ = 0;
- }
- else {
- iv_vb_value_ = vb.iv_vb_value_->clone();
- }
- exception_status_ = vb.exception_status_;
-
- return *this; // return self reference
-}
-
- // set a Vb null, if its not already
-void Vb::set_null()
-{
- free_vb();
-}
-
-//---------------[ Vb::set_oid( const Oid oid ) ]-----------------------
-// set value oid only with another oid
-void Vb::set_oid( const Oid& oid)
-{
- iv_vb_oid_ = oid;
-}
-
-//---------------[ Vb::get_oid( Oid &oid) ]-----------------------------
-// get oid portion
-void Vb::get_oid( Oid &oid) const
-{
- oid = iv_vb_oid_;
-}
-
-//----------------[ void Vb::free_vb() ]--------------------------------
-// protected method to free memory
-// this methos is used to free memory when assigning new vbs
-// or destructing
-// in the case of oids and octets, we need to do a deep free
-void Vb::free_vb()
-{
- if (iv_vb_value_)
- delete iv_vb_value_;
- exception_status_ = SNMP_CLASS_SUCCESS;
- iv_vb_value_ = 0;
-}
-
-void Vb::set_value( const SnmpInt32& i)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new SnmpInt32(i);
-}
-
-void Vb::set_value( const SnmpUInt32& u)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new SnmpUInt32(u);
-}
-
-void Vb::set_value( const Gauge32& g)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new Gauge32(g);
-}
-
-void Vb::set_value( const Counter32& c)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new Counter32(c);
-}
-
-void Vb::set_value( const Counter64& c)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new Counter64(c);
-}
-
-void Vb::set_value( const TimeTicks& t)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new TimeTicks(t);
-}
-
-void Vb::set_value( const OctetStr& s)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new OctetStr(s);
-}
-
-void Vb::set_value( const Oid& o)
-{
- free_vb();
- iv_vb_value_ = (SnmpSyntax *)new Oid(o);
-}
-
-void Vb::set_value ( const SnmpSyntax &val)
-{
- free_vb();
- iv_vb_value_ = val.clone();
-}
-
-int Vb::get_value( SnmpInt32 &i)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_INT32 )) {
- i = *((SnmpInt32 *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( SnmpUInt32 &u)
-{
- if (iv_vb_value_ && iv_vb_value_->valid())
- {
- SmiUINT32 syntax = iv_vb_value_->get_syntax();
- if (syntax == sNMP_SYNTAX_GAUGE32 ||
- syntax == sNMP_SYNTAX_CNTR32 ||
- syntax == sNMP_SYNTAX_TIMETICKS ||
- syntax == sNMP_SYNTAX_UINT32)
- {
- u = *((SnmpUInt32 *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- }
- return SNMP_CLASS_INVALID;
-}
-
-/* return a uint or a gauge. this is casting, but no semantic difference
- * at this level
- */
-int Vb::get_value( Gauge32 &g)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- ((iv_vb_value_->get_syntax() == sNMP_SYNTAX_GAUGE32) ||
- iv_vb_value_->get_syntax() == sNMP_SYNTAX_UINT32) ) {
- g = *((Gauge32 *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( Counter32 &c)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_CNTR32 )) {
- c = *((Counter32 *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( Counter64 &c)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_CNTR64 )) {
- c = *((Counter32 *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( TimeTicks &t)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_TIMETICKS )) {
- t = *((TimeTicks *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( OctetStr &s)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_OCTETS )) {
- s = *((OctetStr *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-int Vb::get_value( Oid &s)
-{
- if (iv_vb_value_ &&
- iv_vb_value_->valid() &&
- (iv_vb_value_->get_syntax() == sNMP_SYNTAX_OID )) {
- s = *((Oid *) iv_vb_value_);
- return SNMP_CLASS_SUCCESS;
- }
- else
- return SNMP_CLASS_INVALID;
-}
-
-
-//---------------[ Vb::get_value( Value &val) ]--------
-int Vb::get_value( SnmpSyntax &val)
-{
- if (iv_vb_value_) {
- val = *iv_vb_value_;
- if (val.valid())
- return SNMP_CLASS_SUCCESS;
- else
- return SNMP_CLASS_INVALID;
- }
- else
- {
-//TM: should set val to be invalid
- return SNMP_CLASS_INVALID;
- }
-}
-
-
-
-//-----[ misc]--------------------------------------------------------
-
-// return the current syntax
-// This method violates Object Orientation but may be useful if
-// the caller has a vb object and does not know what it is.
-// This would be useful in the implementation of a browser.
-SmiUINT32 Vb::get_syntax()
-{
- if ( exception_status_ != SNMP_CLASS_SUCCESS)
- return exception_status_;
- else
- return ( iv_vb_value_ ? iv_vb_value_->get_syntax() : sNMP_SYNTAX_NULL);
-}
-
-// return the printabel value
-const char *Vb::to_string_value()
-{
- if (iv_vb_value_)
- return iv_vb_value_->to_string();
- else
- return "";
-}
-
-// return the printable oid
-const char *Vb::to_string_oid()
-{
- return iv_vb_oid_.to_string();
-}
-
-// generate string with name/ value format
-const char *Vb::to_string()
-{
- int len = ACE_OS::strlen(iv_vb_oid_.to_string());
- const char *ptr = iv_vb_value_ ? iv_vb_value_->to_string() : "";
- len += ACE_OS::strlen(ptr) + 3 + 1; // " / " + null
- ACE_NEW_RETURN(output_, char[len], "");
- ACE_OS::sprintf(output_, "%s / %s", iv_vb_oid_.to_string(), ptr);
- return output_;
-}
-
-// friend function to set exception status
-void set_exception_status( Vb *vb, const SmiUINT32 status)
-{
- vb->exception_status_ = status;
-}
-
-// equivlence operator overloaded
-// hack, by side effect, compare based on string formatting output_
-bool operator==( const Vb &lhs, const Vb &rhs)
-{
- if ( lhs.iv_vb_oid_ != rhs.iv_vb_oid_)
- return false;
-
- if (lhs.iv_vb_value_ != 0 && rhs.iv_vb_value_ != 0)
- {
- const int val =
- ACE_OS::strcmp (lhs.iv_vb_value_->to_string(),
- rhs.iv_vb_value_->to_string());
- return !val;
- }
- else
- return false;
-}
diff --git a/ASNMP/asnmp/vb.h b/ASNMP/asnmp/vb.h
deleted file mode 100644
index b82adb2bc0e..00000000000
--- a/ASNMP/asnmp/vb.h
+++ /dev/null
@@ -1,207 +0,0 @@
-
-
-#ifndef VB_CLS_
-#define VB_CLS_
-//=============================================================================
-/**
- * @file vb.h
- *
- * $Id$
- *
- * This module contains the class definition for the variable binding (VB)
- * class. The VB class is an encapsulation of a SNMP VB. A VB object is
- * composed of one SNMP++ Oid and one SMI value. The Vb class utilizes Oid
- * objects and thus requires the Oid class. To use this class,
- * set oid, value then call valid() to be sure object was constructed correctly.
- *
- *
- * @author Peter E Mellquist
- */
-//=============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----[ external calls ]----------------------------------------------
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/smival.h"
-#include "asnmp/snmperrs.h" // V2c error def
-#include "asnmp/oid.h" // oid class def
-#include "asnmp/timetick.h" // time ticks
-#include "asnmp/counter.h" // counter
-#include "asnmp/gauge.h" // gauge class
-#include "asnmp/ctr64.h" // 64 bit counters
-#include "asnmp/octet.h" // octet class
-#include "asnmp/address.h" // address class def
-#include "asnmp/integer.h" // integer class
-
-
-//------------[ VB Class Def ]-------------------------------------
-// The Vb class is the encapsulation of the SNMP variable binding.
-// Variable binding lists in SNMP++ are represented as arrays of
-// Vb objects. Vb objects are passed to and from SNMP objects to
-// provide getting or setting MIB values.
-// The vb class keeps its own memory for objects and does not
-// utilize pointers to external data structures.
-//
-/**
- * @class Vb
- *
- * @brief Implement the concrete Variable Bindings aka Varbind
- * composite type. Varbinds hold 1 Oid and 1 Value (Any SMI value)
- */
-class ASNMP_Export Vb
-{
-public:
- /// constructor with no arguments
- /// makes an vb, unitialized (does not make object valid)
- Vb( void);
-
- /// constructor to initialize the oid
- /// makes a vb with oid portion initialized (does not make object valid)
- Vb( const Oid &oid);
-
- /// constructor to initialize the oid
- /// makes a vb with oid portion and value portion initialized, (valid)
- Vb( const Oid& vb, const SnmpSyntax &val, const SmiUINT32=SNMP_CLASS_SUCCESS);
-
- /// copy constructor
- Vb( const Vb &vb);
-
- /**
- * destructor
- * if the vb has a oid or an octect string then
- * the associated memory needs to be freed
- */
- ~Vb();
-
- /// return validity of Vb object (both oid and value set return 1 else 0)
- int valid() const;
-
- /// assignment to another Vb object overloaded
- Vb& operator=( const Vb &vb);
-
- /// equivlence operator overloaded
- friend ASNMP_Export bool operator==( const Vb &lhs, const Vb &rhs);
-
- //-----[ set oid / get oid part]------------------------------------------
-
- /// set value oid only with another oid
- void set_oid( const Oid& oid);
-
- /// get oid portion
- void get_oid( Oid &oid) const;
-
- //-----[ set value part]--------------------------------------------------
-
- /// set a Vb null, if its not already
- void set_null();
-
- /// returns 0 on success and a value
- void set_value( const TimeTicks& ticks);
-
- /// returns 0 on success and a value
- void set_value( const Oid& oid);
-
- /// returns 0 on success and a value
- void set_value( const Counter32& ctr);
-
- /// returns 0 on success and a value
- void set_value( const Counter64& ctr);
-
- /// returns 0 on success and a value
- void set_value( const Gauge32& ctr);
-
- /// returns 0 on success and a value
- void set_value( const SnmpUInt32& ctr);
-
- /// returns 0 on success and a value
- void set_value( const SnmpInt32& ctr);
-
- /// get an octet string object
- void set_value( const OctetStr& oct_str);
-
- //----[ get value ]------------------------------------------------
-
- /// returns 0 on success and a value
- int get_value( TimeTicks& ticks);
-
- /// returns 0 on success and a value
- int get_value( Oid& oid);
-
- /// returns 0 on success and a value
- int get_value( Counter32& ctr);
-
- /// returns 0 on success and a value
- int get_value( Counter64& ctr);
-
- /// returns 0 on success and a value
- int get_value( Gauge32& ctr);
-
- /// returns 0 on success and a value
- int get_value( SnmpUInt32& ctr);
-
- /// returns 0 on success and a value
- int get_value( SnmpInt32& ctr);
-
- /// get an octet string object
- int get_value( OctetStr& oct_str);
-
- // escape hatch
- /// for other derived types that can be casted
- void set_value( const SnmpSyntax &val);
-
- /// gets a general value
- int get_value( SnmpSyntax &val);
-
- /// return the current syntax
- /// Or.. if a V2 VB exception is present then return the exception value
- SmiUINT32 get_syntax();
-
- /// set the exception status
- friend ASNMP_Export void set_exception_status( Vb *vb, const SmiUINT32 status);
-
- /// return fomatted version of this object
- const char *to_string();
-
- /// returns a formatted version of the value
- const char *to_string_value();
-
- /// returns a formatted version of the value
- const char *to_string_oid();
-
-protected:
- /// display vb as [ oid / value ]
- char *output_;
-
- /// a vb is made up of a oid
- Oid iv_vb_oid_;
-
- /// and a value...
- SnmpSyntax *iv_vb_value_;
-
- /// are there any vb exceptions??
- SmiUINT32 exception_status_;
-
- void free_vb();
-};
-
-#endif // VB_CLS_
diff --git a/ASNMP/asnmp/wpdu.cpp b/ASNMP/asnmp/wpdu.cpp
deleted file mode 100644
index d05a750970f..00000000000
--- a/ASNMP/asnmp/wpdu.cpp
+++ /dev/null
@@ -1,521 +0,0 @@
-// $Id$
-
-// ============================================================================
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// wpdu.cpp
-//
-// = DESCRIPTION
-// Adapter class. Converts between raw wire format and Pdu objects
-// that can be stuffed out a I/O port or reconstructed
-//
-// = AUTHOR
-// Michael R. MacFaden rework the class api and impl using ACE
-// Peter E Mellquist implementation/code from snmp++ snmpmsg class
-//
-// ============================================================================
-
-#include "asnmp/wpdu.h"
-#include <ace/Log_Msg.h>
-#include "ace/OS_NS_string.h"
-
-#define DEFINE_TRAP_CONSTANTS_
-#include "asnmp/enttraps.h"
-
-ACE_RCSID(asnmp, wpdu, "$Id$")
-
-#define MAX_COMM_STR_LEN 255
-#define V1_COLD_START 0
-#define V1_WARM_START 1
-#define V1_LINK_DOWN 2
-#define V1_LINK_UP 3
-#define V1_AUTH_FAILURE 4
-#define V1_EGP_NEIGHBOR_LOSS 5
-#define V1_ENT_SPECIFIC 6
-
-inline
-void reset_iov(iovec& iov)
-{
- iov.iov_base = 0;
- iov.iov_len = 0;
-}
-
-wpdu::wpdu(const Pdu& pdu, const UdpTarget& target):
- valid_flag_(SNMP_CLASS_INVALID ), comm_len(MAX_COMM_STR_LEN)
-{
- reset_iov(iovec_);
- version_ = target.get_version();
- int status;
- OctetStr comm_str;
-
- community_name[0] = 0;
-
- snmp_pdu *raw_pdu; // create a raw pdu
- raw_pdu = cmu_snmp::pdu_create( (int) pdu.get_type());
- if (!raw_pdu) {
- valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL;
- return;
- }
-
- raw_pdu->reqid = pdu.get_request_id();
- raw_pdu->errstat= (unsigned long) pdu.get_error_status();
- raw_pdu->errindex= (unsigned long) pdu.get_error_index();
-
- switch (raw_pdu->command) {
- case sNMP_PDU_GET:
- case sNMP_PDU_GETNEXT:
- target.get_read_community(comm_str);
- break;
-
- case sNMP_PDU_SET:
- target.get_write_community(comm_str);
- break;
-
- case sNMP_PDU_V1TRAP:
- target.get_read_community(comm_str);
- if (set_trap_info(raw_pdu, pdu)) // will free raw_pdu
- return;
- break;
- case sNMP_PDU_RESPONSE:
- break;
-
- default:
- ACE_ASSERT(0);
- return;
- }
-
- if (load_vbs(raw_pdu, pdu)) {
- cmu_snmp::free_pdu( raw_pdu);
- valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL;
- return;
- }
-
- // TODO: determine how big raw_pdu serializes out to
- iovec_.iov_len = target.get_max_pdu_size();
- ACE_NEW(iovec_.iov_base, char [iovec_.iov_len]);
-
- // create raw byte stream
- status = cmu_snmp::build( raw_pdu,
- (unsigned char *)iovec_.iov_base,
- (int *) &iovec_.iov_len,
- target.get_version(),
- comm_str.data(), comm_str.length());
- if ( status != 0) {
- valid_flag_ = SNMP_ERROR_WRONG_ENCODING;
- cmu_snmp::free_pdu( raw_pdu);
- return;
- }
-
- cmu_snmp::free_pdu( raw_pdu);
- valid_flag_ = SNMP_CLASS_SUCCESS;
-}
-
-int wpdu::set_trap_info(snmp_pdu *raw_pdu, const Pdu& pdu) const
-{
- Oid enterprise;
- Oid trapid; // validate caller has set this correctly
- pdu.get_notify_id( trapid);
- if ( !trapid.valid() || trapid.length() < 2 ) {
- cmu_snmp::free_pdu( raw_pdu);
- return SNMP_CLASS_INVALID_NOTIFYID;
- }
-
-
- raw_pdu->specific_type=0;
-
- // TODO: object should emit numeric instead of this kind of mess...
- if ( trapid == coldStart)
- raw_pdu->trap_type = V1_COLD_START; // cold start
- else if ( trapid == warmStart)
- raw_pdu->trap_type = V1_WARM_START; // warm start
- else if( trapid == linkDown)
- raw_pdu->trap_type = V1_LINK_DOWN; // link down
- else if ( trapid == linkUp)
- raw_pdu->trap_type = V1_LINK_UP; // link up
- else if ( trapid == authenticationFailure )
- raw_pdu->trap_type = V1_AUTH_FAILURE; // authentication failure
- else if ( trapid == egpNeighborLoss)
- raw_pdu->trap_type = V1_EGP_NEIGHBOR_LOSS; // egp neighbor loss
- else {
- raw_pdu->trap_type = V1_ENT_SPECIFIC; // enterprise specific
- // last oid subid is the specific value
- // if 2nd to last subid is "0", remove it
- // enterprise is always the notify oid prefix
- raw_pdu->specific_type = (int) trapid[(int) (trapid.length() - 1)];
- trapid.trim(1);
- if ( trapid[(int)(trapid.length() - 1)] == 0 )
- trapid.trim(1);
- enterprise = trapid;
- }
-
- if ( raw_pdu->trap_type != V1_ENT_SPECIFIC)
- pdu.get_notify_enterprise( enterprise);
- if ( enterprise.length() > 0) {
- // note!! To the contrary, enterprise OID val is
- // copied here and raw_pdu->enterprise is freed in free_pdu
- // as it should be (HDN)
- // these are hooks into an SNMP++ oid
- // and therefor the raw_pdu enterprise
- // should not free them. null them out!!
- SmiLPOID rawOid;
- rawOid = enterprise.oidval();
- // HDN - enterprise is a local object, cannot simply assign pointer
- //raw_pdu->enterprise = rawOid->ptr;
- raw_pdu->enterprise_length = (int) rawOid->len;
- ACE_NEW_RETURN(raw_pdu->enterprise,
- oid[raw_pdu->enterprise_length],-1);
- ACE_OS::memcpy((char *)raw_pdu->enterprise,(char *)rawOid->ptr,
- raw_pdu->enterprise_length * sizeof(oid));
- }
-
- TimeTicks timestamp;
- pdu.get_notify_timestamp( timestamp);
- raw_pdu->time = ( unsigned long) timestamp;
-
- // HDN - set agent addr using the local hostname if possible
- char localHostName[MAXHOSTNAMELEN];
- Snmp::get_host_name(localHostName, MAXHOSTNAMELEN);
- if (ACE_OS::strlen(localHostName) > 0) {
- GenAddress addr(localHostName);
- OctetStr octet;
- addr.to_octet(octet);
- ACE_OS::memcpy(&(raw_pdu->agent_addr.sin_addr),
- octet.data(),
- octet.length());
- }
-
- return 0;
-}
-
-wpdu::wpdu(const iovec& iov): valid_flag_(0),comm_len(MAX_COMM_STR_LEN)
-{
- community_name[0] = 0;
- reset_iov(iovec_);
- version_ = version1; // TODO: figure where this should come from
- ACE_NEW(iovec_.iov_base, char[iov.iov_len]);
- if (!iovec_.iov_base) {
- valid_flag_ = SNMP_CLASS_RESOURCE_UNAVAIL;
- return;
- }
-
- copy_iovec(iovec_, iov);
- valid_flag_ = SNMP_CLASS_SUCCESS;
-}
-
-wpdu::wpdu(): valid_flag_(0), comm_len(MAX_COMM_STR_LEN)
-{
- community_name[0] = 0;
- reset_iov(iovec_);
- version_ = version1; // TODO: figure where this should come from
-}
-
-int wpdu::valid() const
-{
- return (valid_flag_ == SNMP_CLASS_SUCCESS);
-}
-
-int wpdu::load_vbs(snmp_pdu *raw_pdu, const Pdu& pdu)
-{
- int status = 0;
-
- // load up the payload
- // for all Vbs in list, add them to the pdu
- int vb_count;
- Vb tempvb;
- Oid tempoid;
- SmiLPOID smioid;
- SmiVALUE smival;
-
- vb_count = pdu.get_vb_count();
-
- for (int z = 0; z < vb_count; z++) {
- pdu.get_vb( tempvb, z);
- tempvb.get_oid( tempoid);
- smioid = tempoid.oidval();
- // what are we trying to convert here (vb oid part or value part)
- status = convert_vb_to_smival( tempvb, &smival );
- if ( status != SNMP_CLASS_SUCCESS)
- return status;
-
- // add the var to the raw pdu
- cmu_snmp::add_var(raw_pdu, smioid->ptr, (int) smioid->len, &smival);
- free_smival_descriptor( &smival);
- }
-
- return status;
-}
-
-// supports overlapped copies
-// static
-void wpdu::copy_iovec(iovec& dest, const iovec& src)
-{
- if (&dest == &src)
- return;
-
- ACE_OS:: memmove( dest.iov_base, src.iov_base, src.iov_len);
- dest.iov_len = src.iov_len;
-}
-
-int wpdu::convert_vb_to_smival( Vb &tempvb, SmiVALUE *smival )
-{
- smival->syntax = tempvb.get_syntax();
-
- switch ( smival->syntax ) {
-
- case sNMP_SYNTAX_NULL:
- break;
-
- // case sNMP_SYNTAX_INT32:
- case sNMP_SYNTAX_INT:
- {
- SnmpInt32 tmp;
- tempvb.get_value(tmp);
- smival->value.sNumber = tmp;
- }
- break;
-
- // case sNMP_SYNTAX_UINT32:
- case sNMP_SYNTAX_GAUGE32:
- case sNMP_SYNTAX_CNTR32:
- case sNMP_SYNTAX_TIMETICKS:
- {
- SnmpUInt32 tmp;
- tempvb.get_value(tmp);
- smival->value.uNumber = tmp;
- }
- break;
-
- // case Counter64
- case sNMP_SYNTAX_CNTR64:
- {
- Counter64 c64;
- tempvb.get_value(c64);
- smival->value.hNumber.hipart = c64.high();
- smival->value.hNumber.lopart = c64.low();
- }
- break;
-
- // OID syntax
- case sNMP_SYNTAX_OID:
- {
- Oid tmpoid;
- tmpoid.oidval();
- tempvb.get_value(tmpoid);
- SmiLPOID smi = tmpoid.oidval();
- smival->value.oid.len = tmpoid.length();
- ACE_NEW_RETURN(smival->value.oid.ptr,
- SmiUINT32 [smival->value.oid.len], 1);
- ACE_OS::memcpy(smival->value.oid.ptr, smi->ptr,
- smival->value.oid.len *sizeof(SmiUINT32));
- }
- break;
-
- case sNMP_SYNTAX_BITS:
- case sNMP_SYNTAX_OCTETS:
- case sNMP_SYNTAX_IPADDR:
- {
- OctetStr os;
- tempvb.get_value(os);
- smival->value.string.ptr = 0;
- smival->value.string.len = os.length();
- if ( smival->value.string.len > 0 ) {
- ACE_NEW_RETURN(smival->value.string.ptr,
- SmiBYTE [smival->value.string.len], 1);
- if ( smival->value.string.ptr ) {
- for (int i=0; i<(int) smival->value.string.len ; i++)
- smival->value.string.ptr[i] = os[i];
- }
- else {
- smival->syntax = sNMP_SYNTAX_NULL; // invalidate the smival
- return SNMP_CLASS_RESOURCE_UNAVAIL;
- }
- }
- }
- break;
-
- default:
- ACE_DEBUG((LM_DEBUG, "wpdu::convert_vb_to_smival did not convert vb\n"));
- // ACE_ASSERT(0);
- } // switch
-
- return 0;
-}
-
-// free a SMI value
-void wpdu::free_smival_descriptor( SmiVALUE *smival )
-{
- switch ( smival->syntax ) {
- case sNMP_SYNTAX_OCTETS:
- case sNMP_SYNTAX_OPAQUE:
- case sNMP_SYNTAX_IPADDR:
- case sNMP_SYNTAX_BITS: // obsoleted in SNMPv2 Draft Std
- delete [] smival->value.string.ptr;
- break;
-
- case sNMP_SYNTAX_OID:
- delete [] smival->value.oid.ptr;
- break;
- }
- smival->syntax = sNMP_SYNTAX_NULL;
-}
-
-
-wpdu::~wpdu()
-{
- delete [] (char*) iovec_.iov_base;
-}
-
-const iovec& wpdu::get_buffer() const
-{
- return iovec_;
-}
-
-// return a pdu from a buffer
-int wpdu::get_pdu(Pdu& pdu, snmp_version& version)
-{
- if (iovec_.iov_len == 0)
- return -1; // NO DATA
-
- snmp_pdu *raw_pdu;
- raw_pdu = cmu_snmp::pdu_create(0);
- if (!raw_pdu) {
- return SNMP_CLASS_RESOURCE_UNAVAIL;
- }
-
- // max value a client can send us - TODO: replace this with an
- // api to get actual string length
- int status = cmu_snmp::parse( raw_pdu, (unsigned char *)iovec_.iov_base,
- community_name, comm_len,
- version, iovec_.iov_len);
- if (status != 0)
- return SNMP_CLASS_INTERNAL_ERROR;
-
- community_name[comm_len] = 0; // set null based on returned length
- set_request_id( &pdu, raw_pdu->reqid);
- set_error_status( &pdu, (int) raw_pdu->errstat);
- set_error_index( &pdu, (int) raw_pdu->errindex);
- pdu.set_type( raw_pdu->command);
-
- if (restore_vbs(pdu, raw_pdu)) {
- cmu_snmp::free_pdu(raw_pdu);
- return SNMP_CLASS_INTERNAL_ERROR;
- }
-
- cmu_snmp::free_pdu(raw_pdu);
- return 0;
-}
-
-int wpdu::restore_vbs(Pdu& pdu, const snmp_pdu *raw_pdu) const
-{
- Vb tempvb;
- Oid tempoid;
- struct variable_list *vp;
-
- for(vp = raw_pdu->variables; vp; vp = vp->next_variable) {
-
- // extract the oid portion
- tempoid.set_data( (unsigned long *)vp->name,
- ( unsigned int) vp->name_length);
- tempvb.set_oid( tempoid);
-
- // extract the value portion
- switch(vp->type) {
-
- // octet string
- case sNMP_SYNTAX_OCTETS:
- case sNMP_SYNTAX_OPAQUE:
- {
- OctetStr octets( (char *) vp->val.string,
- (long) vp->val_len);
- tempvb.set_value( octets);
- }
- break;
-
- // object id
- case sNMP_SYNTAX_OID:
- {
- Oid oid( (unsigned long*) vp->val.objid,
- (int) vp->val_len);
- tempvb.set_value( oid);
- }
- break;
-
- // timeticks
- case sNMP_SYNTAX_TIMETICKS:
- {
- TimeTicks timeticks( (unsigned long) *(vp->val.integer));
- tempvb.set_value( timeticks);
- }
- break;
-
- // 32 bit counter
- case sNMP_SYNTAX_CNTR32:
- {
- Counter32 counter32( (unsigned long) *(vp->val.integer));
- tempvb.set_value( counter32);
- }
- break;
-
- // ip address
- case sNMP_SYNTAX_IPADDR:
- {
- char buffer[20];
- sprintf( buffer,"%d.%d.%d.%d",
- vp->val.string[0],
- vp->val.string[1],
- vp->val.string[2],
- vp->val.string[3]);
- IpAddress ipaddress( buffer);
- tempvb.set_value( ipaddress);
- }
- break;
-
- // 32 bit integer
- case sNMP_SYNTAX_INT:
- {
- SnmpInt32 int32( (long) *(vp->val.integer));
- tempvb.set_value( int32);
- }
- break;
-
- // 32 bit unsigned integer
- case sNMP_SYNTAX_UINT32:
- {
- SnmpUInt32 uint32( (unsigned long) *(vp->val.integer));
- tempvb.set_value( uint32);
- }
- break;
-
- // v2 counter 64's
- case sNMP_SYNTAX_CNTR64:
- break;
-
- case sNMP_SYNTAX_NULL:
- tempvb.set_null();
- break;
-
- // v2 vb exceptions
- case sNMP_SYNTAX_NOSUCHOBJECT:
- case sNMP_SYNTAX_NOSUCHINSTANCE:
- case sNMP_SYNTAX_ENDOFMIBVIEW:
- set_exception_status( &tempvb, vp->type);
- break;
-
- default:
- tempvb.set_null();
-
- } // end switch
-
- // append the vb to the pdu
- pdu += tempvb;
- }
-
- return 0;
-}
-
-const unsigned char *wpdu::get_community() const
-{
- return community_name;
-}
diff --git a/ASNMP/asnmp/wpdu.h b/ASNMP/asnmp/wpdu.h
deleted file mode 100644
index 7feec356bc8..00000000000
--- a/ASNMP/asnmp/wpdu.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* -*-C++-*- */
-#ifndef WPDU_H_
-#define WPDU_H_
-//=============================================================================
-/**
- * @file wpdu.h
- *
- * $Id$
- *
- * Adapter class. Converts a Pdu and GenTarget into a format
- * that can be stuffed out a I/O port
- *
- *
- * @author Michael R. MacFaden re-worked api
- * @author use ACE APIPeter E Mellquist wrote original class snmpmsg
- */
-//=============================================================================
-
-
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/asn1.h"
-#include "asnmp/pdu.h"
-#include "asnmp/target.h"
-
-// this is an adapter class, it peforms the following transformations
-// PDU / Target -> iovec buffer
-// iovec buffer -> PDU / Target
-struct snmp_pdu;
-/**
- * @class wpdu
- *
- * @brief Implement an Adapter pattern between CMU SNMP and HP SNMP++
- */
-class ASNMP_Export wpdu
-{
-public:
-
- /// construct CMU data from HP SNMP++ objects
- /// construct HP SNMP++ objects from raw buffer via CMU SNMP datatypes
- wpdu(const Pdu& pdu, const UdpTarget& target);
- wpdu(const iovec& buffer);
- wpdu(); // same as using iovec?
-
- ~wpdu();
-
- /// constructor completed ok? rc = 1 else 0
- int valid() const;
-
- /// return raw data stream via CMU code
- const iovec& get_buffer() const;
-
- /// return HP SNMP++ pdu
- int get_pdu(Pdu& pdu, snmp_version& version);
-
- /// return community strptr
- const unsigned char *get_community() const;
-
-private:
- int convert_vb_to_smival( Vb &tempvb, SmiVALUE *smival );
- int load_vbs(snmp_pdu *raw_pdu, const Pdu& pdu);
- int restore_vbs(Pdu& pdu, const snmp_pdu *raw_pdu) const;
- void free_smival_descriptor( SmiVALUE *smival );
- static void copy_iovec(iovec& dest, const iovec& src);
- int set_trap_info(snmp_pdu *raw_pdu, const Pdu& pdu) const;
-
- /// raw format
- iovec iovec_;
-
- /// object construction state
- int valid_flag_;
-
- /// snmp version
- snmp_version version_;
-
- unsigned char community_name[MAX_COMM_STR_LEN];
- unsigned long comm_len; // = MAX_COMM_STR_LEN;
-};
-
-#endif // WPDU_H_
diff --git a/ASNMP/examples/Makefile.am b/ASNMP/examples/Makefile.am
deleted file mode 100644
index 1855938d914..00000000000
--- a/ASNMP/examples/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-SUBDIRS = \
- get \
- next \
- set \
- trap \
- walk
-
diff --git a/ASNMP/examples/get/Makefile.am b/ASNMP/examples/get/Makefile.am
deleted file mode 100644
index c691338b998..00000000000
--- a/ASNMP/examples/get/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-noinst_PROGRAMS =
-
-## Makefile.asnmp_example_get.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS += get
-
-get_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-get_SOURCES = \
- get.cpp
-
-get_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Makefile.asnmp_example_get_async.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS += get_async
-
-get_async_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-get_async_SOURCES = \
- get_async.cpp
-
-get_async_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/examples/get/get.cpp b/ASNMP/examples/get/get.cpp
deleted file mode 100644
index ff6fcb9681f..00000000000
--- a/ASNMP/examples/get/get.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// get.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::get API
-// to access an SNMP Version 1 agent.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework API/ACE integration
-//
-// ============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(get, get, "$Id$")
-
-//
-// SNMPv1 Get Application
-//
-class getapp {
- public:
- getapp(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- private:
- getapp(const getapp&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- getapp get(argc, argv);
- if (get.valid())
- return get.run();
- else
- getapp::usage();
- return 1;
-}
-
-int getapp::valid() const
-{
- return valid_;
-}
-getapp::getapp(int argc, char *argv[]): valid_(0)
-{
- Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default is sysDescr
- if ( argc < 2)
- return;
-
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("o:c:r:t:p:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'o':
- req = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- if (req.valid() == 0)
- cout << "ERROR: oid value: "
- << ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg())
- << "is not valid. using default.\n";
- break;
-
- case 'c':
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_read_community(community_);
- break;
-
- case 'r':
- target_.set_retry(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 't':
- target_.set_timeout(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- default:
- break;
- }
-
- Vb vb; // construct a Vb object
- if (req.valid())
- vb.set_oid( req); // set the Oid portion of the Vb
- else {
- vb.set_oid( def_oid); // set the Oid portion of the Vb
- }
- pdu_ += vb;
- vb.get_oid(oid_); // store for later use
- valid_ = 1;
-}
-
-void getapp::usage()
-{
- cout << "Usage:\n";
- cout << "get [options] dotted-quad | DNSName[:port]\n";
- cout << " -o OID defaults to 1.3.6.1.2.1.1.1.0 (mibII sysDescr.0) \n";
- cout << " -c Community_name, default is 'public' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second" << endl;
-}
-
-
-int getapp::run()
-{
-
- //----------[ create a ASNMP session ]-----------------------------------
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- //--------[ build up ASNMP object needed ]-------------------------------
- if (address_.get_port() == 0)
- address_.set_port(DEF_AGENT_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " GET SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Retries=" << target_.get_retry() << " \
- Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \
- community_.to_string() << " ]"<< endl;
-
- if (snmp_.get( pdu_, target_) == SNMP_CLASS_SUCCESS) {
- Vb vb;
- // check to see if there are any errors
- if (pdu_.get_error_status()) {
- cout << "ERROR: agent replied as follows\n";
- cout << pdu_.agent_error_reason() << endl;
- }
- else {
- VbIter iter(pdu_);
- while (iter.next(vb)) {
- cout << "\tOid = " << vb.to_string_oid() << "\n";
- cout << "\tValue = " << vb.to_string_value() << "\n";
- }
- }
- }
- else {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl;
- }
-
- cout << "\nASNMP:INFO: command completed normally.\n"<< endl;
- return 0;
-}
-
diff --git a/ASNMP/examples/get/get.mpc b/ASNMP/examples/get/get.mpc
deleted file mode 100644
index ffa5a2a5f53..00000000000
--- a/ASNMP/examples/get/get.mpc
+++ /dev/null
@@ -1,23 +0,0 @@
-// $Id$
-
-project (asnmp_example_get) : aceexe {
- exename = get
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- get.cpp
- }
-}
-
-project (asnmp_example_get_async) : aceexe {
- exename = get_async
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- get_async.cpp
- }
-}
diff --git a/ASNMP/examples/get/get_async.cpp b/ASNMP/examples/get/get_async.cpp
deleted file mode 100644
index 8217ffabac1..00000000000
--- a/ASNMP/examples/get/get_async.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-// ============================================================================
-// $Id$
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// get.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::get API
-// to access an SNMP Version 1 agent.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework API/ACE integration
-//
-// ============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(get, get_async, "$Id$")
-
-//
-// SNMPv1 Get Application
-//
-class getapp : public Snmp_Result {
- public:
- getapp(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- virtual void result(Snmp * r, int rc);
-
- private:
- getapp(const getapp&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- getapp get(argc, argv);
- if (get.valid())
- return get.run();
- else
- getapp::usage();
- return 1;
-}
-
-int getapp::valid() const
-{
- return valid_;
-}
-getapp::getapp(int argc, char *argv[]): valid_(0)
-{
- Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default is sysDescr
- if ( argc < 2)
- return;
-
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("o:c:r:t:p:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'o':
- req = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- if (req.valid() == 0)
- cout << "ERROR: oid value: "
- << ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg())
- << "is not valid. using default.\n";
- break;
-
- case 'c':
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_read_community(community_);
- break;
-
- case 'r':
- target_.set_retry(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 't':
- target_.set_timeout(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- default:
- break;
- }
-
- Vb vb; // construct a Vb object
- if (req.valid())
- vb.set_oid( req); // set the Oid portion of the Vb
- else {
- vb.set_oid( def_oid); // set the Oid portion of the Vb
- }
- pdu_ += vb;
- vb.get_oid(oid_); // store for later use
- valid_ = 1;
-}
-
-void getapp::usage()
-{
- cout << "Usage:\n";
- cout << "get [options] dotted-quad | DNSName[:port]\n";
- cout << " -o OID defaults to 1.3.6.1.2.1.1.1.0 (mibII sysDescr.0) \n";
- cout << " -c Community_name, default is 'public' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second" << endl;
-}
-
-
-int getapp::run()
-{
-
- //----------[ create a ASNMP session ]-----------------------------------
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- //--------[ build up ASNMP object needed ]-------------------------------
- if (address_.get_port() == 0)
- address_.set_port(DEF_AGENT_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " GET SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Retries=" << target_.get_retry() << " \
- Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \
- community_.to_string() << " ]"<< endl;
-
- if (snmp_.get( pdu_, target_, this) != SNMP_CLASS_SUCCESS) {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl;
- } else {
- ACE_Reactor::instance()->run_reactor_event_loop();
- }
- return 0;
-}
-
-void getapp::result(Snmp *, int rc)
-{
- Vb vb;
- if (rc < 0)
- {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl;
- } else {
- // check to see if there are any errors
- if (pdu_.get_error_status()) {
- cout << "ERROR: agent replied as follows\n";
- cout << pdu_.agent_error_reason() << endl;
- }
- else {
- VbIter iter(pdu_);
- while (iter.next(vb)) {
- cout << "\tOid = " << vb.to_string_oid() << "\n";
- cout << "\tValue = " << vb.to_string_value() << "\n";
- }
- }
- }
- cout << "\nASNMP:INFO: command completed normally.\n"<< endl;
- ACE_Reactor::instance()->end_reactor_event_loop();
-}
diff --git a/ASNMP/examples/next/Makefile.am b/ASNMP/examples/next/Makefile.am
deleted file mode 100644
index dae95eaeaba..00000000000
--- a/ASNMP/examples/next/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-
-## Makefile.asnmp_example_next.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS = next
-
-next_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-next_SOURCES = \
- next.cpp
-
-next_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/examples/next/next.cpp b/ASNMP/examples/next/next.cpp
deleted file mode 100644
index 7a9a2208ca2..00000000000
--- a/ASNMP/examples/next/next.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// next.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::get_next API
-// to access an SNMP Version 1 agent.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework API/ACE integration
-//
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(next, next, "$Id$")
-
-//
-// SNMPv1 Get Next Application
-//
-class nextapp {
- public:
- nextapp(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- private:
- nextapp(const nextapp&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- nextapp get(argc, argv);
- if (get.valid())
- return get.run();
- else
- nextapp::usage();
- return 1;
-}
-
-int nextapp::valid() const
-{
- return valid_;
-}
-nextapp::nextapp(int argc, char *argv[]): valid_(0)
-{
- Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default is sysDescr
- if ( argc < 2)
- return;
-
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("o:c:r:t:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'o':
- req = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- if (req.valid() == 0)
- cout << "ERROR: oid value: "
- << ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg())
- << "is not valid. using default.\n";
- break;
-
- case 'c':
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_read_community(community_);
- break;
-
- case 'r':
- target_.set_retry(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 't':
- target_.set_timeout(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- default:
- break;
- }
-
- Vb vb; // construct a Vb object
- if (req.valid())
- vb.set_oid( req); // set the Oid portion of the Vb
- else {
- vb.set_oid( def_oid); // set the Oid portion of the Vb
- }
- pdu_ += vb;
- vb.get_oid(oid_); // store for later use
- valid_ = 1;
-}
-
-void nextapp::usage()
-{
- cout << "Usage:\n";
- cout << "next [options] dotted-quad | DNSName[:port]\n";
- cout << " -o OID starts with oid after 1.3.6.1.2.1.1.1.0 (mibII sysDescr.0) \n";
- cout << " -c Community_name, default is 'public' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second" << endl;
-}
-
-
-int nextapp::run()
-{
-
- //----------[ create a ASNMP session ]-----------------------------------
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- //--------[ build up ASNMP object needed ]-------------------------------
- if (address_.get_port() == 0)
- address_.set_port(DEF_AGENT_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " GET_NEXT SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Retries=" << target_.get_retry() << " \
- Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \
- community_.to_string() << " ]"<< endl;
-
- if (snmp_.get_next( pdu_, target_) == SNMP_CLASS_SUCCESS) {
- Vb vb;
- // check to see if there are any errors
- if (pdu_.get_error_status()) {
- cout << "ERROR: agent replied as follows\n";
- cout << pdu_.agent_error_reason() << endl;
- }
- else {
- VbIter iter(pdu_);
- while (iter.next(vb)) {
- cout << "\tOid = " << vb.to_string_oid() << "\n";
- cout << "\tValue = " << vb.to_string_value() << "\n";
- }
- }
- }
- else {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: get_next command failed reason: " << ptr << endl;
- }
- cout << "ASNMP:INFO:command completed normally. ACE Rocks...\n"<< endl;
- return 0;
-}
-
diff --git a/ASNMP/examples/next/next.mpc b/ASNMP/examples/next/next.mpc
deleted file mode 100644
index f0022cb46a2..00000000000
--- a/ASNMP/examples/next/next.mpc
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id$
-
-project (asnmp_example_next) : aceexe {
- exename = next
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- next.cpp
- }
-}
-
diff --git a/ASNMP/examples/set/Makefile.am b/ASNMP/examples/set/Makefile.am
deleted file mode 100644
index 7810a658eed..00000000000
--- a/ASNMP/examples/set/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-
-## Makefile.asnmp_example_set.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS = set
-
-set_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-set_SOURCES = \
- set.cpp
-
-set_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/examples/set/set.cpp b/ASNMP/examples/set/set.cpp
deleted file mode 100644
index 39eb447f9a7..00000000000
--- a/ASNMP/examples/set/set.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// set.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::set API
-// to update an oid in an SNMP Version 1 agent.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework API/ACE integration
-//
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(set, set, "$Id$")
-
-//
-// SNMPv1 Set Application
-//
-class set {
- public:
- set(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- private:
- set(const set&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- set get(argc, argv);
- if (get.valid())
- return get.run();
- else
- set::usage();
- return 1;
-}
-
-int
-set::valid() const
-{
- return valid_;
-}
-
-set::set(int argc, char *argv[]): valid_(0)
-{
- Vb vb; // construct a Vb object
- Oid req;
- if ( argc < 2)
- return;
- target_.get_write_community(community_);
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("o:c:r:t:I:U:C:G:T:O:S:P:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'o':
- req = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- if (req.valid() == 0)
- cout << "ERROR: oid value: "
- << ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg())
- << "is not valid. using default.\n";
- break;
-
- case 'c':
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_write_community(community_);
- break;
-
- case 'r':
- target_.set_retry(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 't':
- target_.set_timeout(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 'I': // Integer32
- {
- SnmpInt32 o(ACE_OS::atoi(get_opt.opt_arg()));
- vb.set_value(o);
- pdu_ += vb;
- }
- break;
-
- case 'U': // Unsigned32
- {
- SnmpUInt32 o(ACE_OS::atoi(get_opt.opt_arg()));
- vb.set_value(o);
- pdu_ += vb;
- }
- break;
-
- case 'C': // Counter32
- {
- Counter32 o(ACE_OS::atoi(get_opt.opt_arg()));
- vb.set_value(o);
- pdu_ += vb;
- }
- break;
-
- case 'G': // Gauge32
- {
- Gauge32 o(ACE_OS::atoi(get_opt.opt_arg()));
- vb.set_value(o);
- pdu_ += vb;
- }
- break;
-
- case 'T': // TimeTicks
- {
- TimeTicks o(ACE_OS::atoi(get_opt.opt_arg()));
- vb.set_value(o);
- pdu_ += vb;
- }
- break;
-
- case 'O': // Oid as a variable identifier
- {
- oid_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- vb.set_oid(oid_); // when value is set, pdu updated
- }
- break;
-
- case 'S': // Octet String
- {
- OctetStr o(ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg()));
- vb.set_value(o); // set the Oid portion of the Vb
- pdu_ += vb;
- }
- break;
-
- case 'P': // Oid String as a value
- {
- Oid o(ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg()));
- vb.set_value(o); // set the Oid portion of the Vb
- pdu_ += vb;
- }
- break;
-
- default:
- break;
- }
-
- // if user didn't set anything use defaults
- if (pdu_.get_vb_count() == 0) {
- Oid def_oid("1.3.6.1.2.1.1.4.0"); // defualt is sysName
- OctetStr def_value("sysName.0 updated by ASNMP set command");
- vb.set_oid(def_oid);
- vb.set_value(def_value);
- pdu_ += vb;
- cout << "INFO: using defaults, setting sysName to : " << \
- def_value.to_string() << endl;
- }
-
- valid_ = 1;
-}
-
-void set::usage()
-{
- cout << "Usage:\n";
- cout << "next [options] dotted-quad | DNSName[:port]\n";
- cout << " -o OID starts with oid after 1.3.6.1.2.1.1.1.0 (mibII sysDescr.0) \n";
- cout << " -c Community_name, default is 'private' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second\n";
- cout << " -O oid_to_set -{I,U,G,S,P} value\n";
- cout << " where I=int32, U=uint32, G=gauge32, S=octet, P=oid" << endl;
-}
-
-
-int set::run()
-{
-
- //----------[ create a ASNMP session ]-----------------------------------
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- //--------[ build up ASNMP object needed ]-------------------------------
- if (address_.get_port() == 0)
- address_.set_port(DEF_AGENT_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " SET SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Retries=" << target_.get_retry() << " \
- Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \
- community_.to_string() << " ]"<< endl;
-
- if (snmp_.set( pdu_, target_) == SNMP_CLASS_SUCCESS) {
- Vb vb;
- // check to see if there are any errors
- if (pdu_.get_error_status()) {
- cout << "ERROR: agent replied as follows\n";
- cout << pdu_.agent_error_reason() << endl;
- }
- else {
- VbIter iter(pdu_);
- while (iter.next(vb)) {
- cout << "\tOid = " << vb.to_string_oid() << "\n";
- cout << "\tValue = " << vb.to_string_value() << "\n";
- }
- }
- }
- else {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: set command failed reason: " << ptr << endl;
- }
- cout << "ASNMP:INFO:command completed normally.\n"<< endl;
- return 0;
-}
-
diff --git a/ASNMP/examples/set/set.mpc b/ASNMP/examples/set/set.mpc
deleted file mode 100644
index bb40f93e6df..00000000000
--- a/ASNMP/examples/set/set.mpc
+++ /dev/null
@@ -1,13 +0,0 @@
-// $Id$
-
-project (asnmp_example_set) : aceexe {
- exename = set
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- set.cpp
- }
-}
-
diff --git a/ASNMP/examples/trap/Makefile.am b/ASNMP/examples/trap/Makefile.am
deleted file mode 100644
index 52307634b67..00000000000
--- a/ASNMP/examples/trap/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-
-## Makefile.asnmp_example_trap.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS = trap
-
-trap_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-trap_SOURCES = \
- trap.cpp
-
-trap_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/examples/trap/trap.cpp b/ASNMP/examples/trap/trap.cpp
deleted file mode 100644
index 59d4f9f25bc..00000000000
--- a/ASNMP/examples/trap/trap.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// trap.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::trap API
-// to send to an SNMP Version 1 trap listener app.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework OO, API/ACE integration
-//
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#define DEFINE_TRAP_CONSTANTS_
-#include "asnmp/enttraps.h" // enterprise standard traps
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(trap, trap, "$Id$")
-
-//
-// SNMPv1 Trap Application
-//
-class trapapp {
- public:
- trapapp(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- private:
- trapapp(const trapapp&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- trapapp get(argc, argv);
- if (get.valid())
- return get.run();
- else
- trapapp::usage();
- return 1;
-}
-
-int trapapp::valid() const
-{
- return valid_;
-}
-trapapp::trapapp(int argc, char *argv[]): valid_(0)
-{
- Oid def_ent_oid("1.3.6.1.2.1.1.1.2.0.1"); // def enterprise oid
- Oid ent, trap; // user specified values
-
- if ( argc < 2) // hostname mandatory
- return;
-
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("c:e:t:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'c': // community string
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_read_community(community_);
- break;
-
- case 'e': // trap oid to send
- ent = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- break;
-
- case 't': // trap oid
- trap = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- break;;
-
- default:
- break;
- }
-
- if (ent.valid())
- pdu_.set_notify_enterprise( ent); // set up the enterprise of the trap
- else
- pdu_.set_notify_enterprise( def_ent_oid);
-
- if (trap.valid())
- pdu_.set_notify_id( trap); // set the id of the trap
- else
- pdu_.set_notify_id( coldStart); // set the id of the trap
-
- Oid detail_oid("1.3.6.1.4.1.11.2.16.2");
- OctetStr detail_value("SNMP++ Trap Send Test");
- Vb vb(detail_oid, detail_value);
- pdu_ += vb;
-
- pdu_.get_notify_id(oid_); // store for later use
- valid_ = 1;
-}
-
-void trapapp::usage()
-{
- cout << "Usage:\n";
- cout << "trap [options] dotted-quad | DNSName[:port]\n";
- cout << " -c Community_name, default is 'public' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second" << endl;
- cout << " -e oid enterprise oid default is 1.3.6.1.2.1.1.1.2.0.1\n";
- cout << " -O oid trap id default is coldStart 1.3.6.1.6.3.1.1.5.1\n";
-}
-
-int trapapp::run()
-{
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- if (address_.get_port() == 0)
- address_.set_port(DEF_TRAP_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " TRAP GENERATOR SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Community=" << community_.to_string() << " ]"<< endl;
-
- if (snmp_.trap( pdu_, target_) == SNMP_CLASS_SUCCESS) {
- cout << "Trap was written to network...\n";
- }
- else {
- const char *ptr = snmp_.error_string();
- cout << "ASNMP:ERROR: trap command failed reason: " << ptr << endl;
- }
-
- cout << "ASNMP:INFO:command completed normally.\n"<< endl;
- return 0;
-}
-
diff --git a/ASNMP/examples/trap/trap.mpc b/ASNMP/examples/trap/trap.mpc
deleted file mode 100644
index d0d6dc8e897..00000000000
--- a/ASNMP/examples/trap/trap.mpc
+++ /dev/null
@@ -1,12 +0,0 @@
-// $Id$
-
-project (asnmp_example_trap) : aceexe {
- exename = trap
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- trap.cpp
- }
-}
diff --git a/ASNMP/examples/walk/Makefile.am b/ASNMP/examples/walk/Makefile.am
deleted file mode 100644
index f0bc64a36cf..00000000000
--- a/ASNMP/examples/walk/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-
-## Makefile.asnmp_example_walk.am
-
-if !BUILD_USES_WCHAR
-noinst_PROGRAMS = walk
-
-walk_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-walk_SOURCES = \
- walk.cpp
-
-walk_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-endif !BUILD_USES_WCHAR
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/examples/walk/walk.cpp b/ASNMP/examples/walk/walk.cpp
deleted file mode 100644
index 56fc112fd71..00000000000
--- a/ASNMP/examples/walk/walk.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// walk.cpp
-//
-// = DESCRIPTION
-// Sample application demonstrating synchronous Snmp::get, get_next API
-// to access an SNMP Version 1 agent.
-//
-// = AUTHOR
-// Peter E. Mellquist original code
-// Michael R MacFaden mrm@cisco.com rework API/ACE integration
-//
-// ============================================================================
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-#include "asnmp/snmp.h"
-#include "ace/Argv_Type_Converter.h"
-#include "ace/Get_Opt.h"
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-ACE_RCSID(walk, walk, "$Id$")
-
-//
-// SNMPv1 Walk Mib Application
-//
-class walkapp {
- public:
- walkapp(int argc, char **argv); // process command line args
- int valid() const; // verify transaction can proceed
- int run(); // issue transaction
- static void usage(); // operator help message
-
- private:
- walkapp(const walkapp&);
-
- UdpAddress address_;
- Pdu pdu_; // construct a request Pdu
- Oid oid_;
- OctetStr community_;
- Snmp snmp_;
- UdpTarget target_;
- int valid_;
-};
-
-
-// main entry point
-int main( int argc, char *argv[])
-{
- walkapp get(argc, argv);
- if (get.valid())
- return get.run();
- else
- walkapp::usage();
- return 1;
-}
-
-int walkapp::valid() const
-{
- return valid_;
-}
-
-walkapp::walkapp(int argc, char *argv[]): valid_(0)
-{
- Oid req, def_oid("1.3.6.1.2.1.1.1.0"); // default begin walk with MIBII
- if ( argc < 2)
- return;
-
- address_ = argv[argc - 1];
- if ( !address_.valid()) {
- cout << "ERROR: Invalid IPv4 address or DNS hostname: " \
- << argv[argc] << "\n";
- return;
- }
-
- ACE_Argv_Type_Converter to_tchar (argc, argv);
- ACE_Get_Opt get_opt (argc,
- to_tchar.get_TCHAR_argv (),
- ACE_TEXT ("o:c:r:t:"));
- for (int c; (c = get_opt ()) != -1; )
- switch (c)
- {
- case 'o':
- req = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- if (req.valid() == 0)
- cout << "ERROR: oid value: "
- << ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg())
- << "is not valid. using default.\n";
- break;
-
- case 'c':
- community_ = ACE_TEXT_ALWAYS_CHAR (get_opt.opt_arg());
- target_.set_read_community(community_);
- break;
-
- case 'r':
- target_.set_retry(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- case 't':
- target_.set_timeout(ACE_OS::atoi (get_opt.opt_arg()));
- break;
-
- default:
- break;
- }
-
- Vb vb; // construct a Vb object
- if (req.valid())
- vb.set_oid( req); // set the Oid portion of the Vb
- else {
- vb.set_oid( def_oid); // set the Oid portion of the Vb
- }
- pdu_ += vb;
- vb.get_oid(oid_); // store for later use
- valid_ = 1;
-}
-
-void walkapp::usage()
-{
- cout << "Usage:\n";
- cout << "walk [options] dotted-quad | DNSName[:port]\n";
- cout << " -o OID starts with oid after 1.3.6.1.2.1.1.1.0 (mibII sysDescr.0) \n";
- cout << " -c Community_name, default is 'public' \n";
- cout << " -r N retries default is N = 1 retry\n";
- cout << " -t N timeout in seconds default is 1 second" << endl;
-}
-
-
-//
-// simple mib iterator class
-//
-class MibIter {
- public:
- // Pdu must contain initial oid to begin with
- MibIter(Snmp *snmp, Pdu& pdu, UdpTarget* target);
- int next(Vb& vb, char *&err_reason); // return next oid in mib
-
- private:
- Snmp *snmp_;
- UdpTarget *target_;
- Pdu pdu_;
- Vb vb_;
- int first_; // flag to obtain first entry
- int valid_; // flag to obtain first entry
-};
-
-MibIter::MibIter(Snmp* snmp, Pdu& pdu, UdpTarget *target):
- snmp_(snmp), target_(target), pdu_(pdu), first_(0),
- valid_(0)
-{
- // verify we have a valid oid to begin iterating with
- Oid oid;
- Vb vb;
- pdu.get_vb(vb, 0);
- vb.get_oid(oid);
- if (oid.valid())
- valid_ = 1;
-}
-
-// return vb of next oid in agent tree, return 1 else return 0, reason set
-int MibIter::next(Vb& vb, char *& reason)
-{
- int rc;
-
- if (valid_ == 0) // not valid object
- return -1;
-
- // 1. poll for value
- if (first_ == 0) {
- rc = snmp_->get( pdu_, *target_);
- first_++;
- }
- else {
- rc = snmp_->get_next( pdu_, *target_);
- }
-
- if (rc != SNMP_CLASS_SUCCESS) {
- reason = const_cast <char*> (snmp_->error_string());
- return 0;
- }
-
- // 2. check for problems
- if (pdu_.get_error_status()) {
- reason = const_cast <char*> (pdu_.agent_error_reason());
- return 0;
- }
-
- // 3. return vb to caller
- pdu_.get_vb(vb, 0);
- Oid nextoid;
- vb.get_oid(nextoid); // and setup next oid to get
- Vb nextvb(nextoid);
- pdu_.delete_all_vbs();
- pdu_ += nextvb; // can't do set_vb as there are no entries to replace
-
- return 1; // ok
-}
-
-int walkapp::run()
-{
-
- //----------[ create a ASNMP session ]-----------------------------------
- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) {
- cout << "\nASNMP:ERROR:Create session failed: "<<
- snmp_.error_string()<< "\n";
- return 1;
- }
-
- //--------[ build up ASNMP object needed ]-------------------------------
- if (address_.get_port() == 0)
- address_.set_port(DEF_AGENT_PORT);
- target_.set_address( address_); // make a target using the address
-
- //-------[ issue the request, blocked mode ]-----------------------------
- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \
- " WALK SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n";
- target_.get_address(address_); // target updates port used
- int rc;
- const char *name = address_.resolve_hostname(rc);
-
- cout << "Device: " << address_ << " ";
- cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n";
- cout << "[ Retries=" << target_.get_retry() << " \
- Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \
- community_.to_string() << " ]"<< endl;
-
- MibIter iter(&snmp_, pdu_, &target_);
- char *err_str = 0;
- Vb vb;
- unsigned ctr = 0;
- while (iter.next(vb, err_str)) {
- cout << "\tOid = " << vb.to_string_oid() << "\n";
- cout << "\tValue = " << vb.to_string_value() << "\n";
- ctr++;
- }
-
- if (!err_str) {
- cout << "ERROR: walk: " << err_str << endl;
- return 0;
- }
-
- cout << "ASNMP:INFO:command completed normally. ACE Rocks...\n"<< endl;
- return 0;
-}
-
diff --git a/ASNMP/examples/walk/walk.mpc b/ASNMP/examples/walk/walk.mpc
deleted file mode 100644
index aff0fb98d35..00000000000
--- a/ASNMP/examples/walk/walk.mpc
+++ /dev/null
@@ -1,12 +0,0 @@
-// $Id$
-
-project (asnmp_example_walk) : aceexe {
- exename = walk
- after += asnmp_lib
- libs += asnmp
- avoids += uses_wchar
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- walk.cpp
- }
-}
diff --git a/ASNMP/mibs/RFC1213-MIB.my b/ASNMP/mibs/RFC1213-MIB.my
deleted file mode 100644
index f89f8bf125e..00000000000
--- a/ASNMP/mibs/RFC1213-MIB.my
+++ /dev/null
@@ -1,2618 +0,0 @@
--- *****************************************************************
--- RFC1213-MIB.my: MIB-II MIB file
---
--- April 1994, Jeffrey T. Johnson
---
--- Copyright (c) 1994-1996 by cisco Systems, Inc.
--- All rights reserved.
---
--- *****************************************************************
---
--- This mib was extracted from RFC 1213
--- The following changes have been applied:
--- The enumerations unknown(4) and dormant(5) have been added to
--- ifOperStatus to reflect a change to the ifTable introduced in
--- RFC 1573
---
--- The SYNTAX of ifType has been changed to IANAifType, to reflect the
--- change to the ifTable introduced in RFC1573.
-
- RFC1213-MIB DEFINITIONS ::= BEGIN
-
- IMPORTS
- mgmt, NetworkAddress, IpAddress, Counter, Gauge,
- TimeTicks
- FROM RFC1155-SMI
- OBJECT-TYPE
- FROM RFC-1212
- TEXTUAL-CONVENTION
- FROM SNMPv2-TC
- IANAifType
- FROM IANAifType-MIB;
-
- -- This MIB module uses the extended OBJECT-TYPE macro as
- -- defined in [14];
-
-
- -- MIB-II (same prefix as MIB-I)
-
- mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
-
- -- textual conventions
-
- DisplayString ::=
- OCTET STRING
- -- This data type is used to model textual information taken
- -- from the NVT ASCII character set. By convention, objects
- -- with this syntax are declared as having
- --
- -- SIZE (0..255)
-
- PhysAddress ::=
- OCTET STRING
- -- This data type is used to model media addresses. For many
- -- types of media, this will be in a binary representation.
- -- For example, an ethernet address would be represented as
- -- a string of 6 octets.
-
-
- -- groups in MIB-II
-
- system OBJECT IDENTIFIER ::= { mib-2 1 }
-
- interfaces OBJECT IDENTIFIER ::= { mib-2 2 }
-
- at OBJECT IDENTIFIER ::= { mib-2 3 }
-
- ip OBJECT IDENTIFIER ::= { mib-2 4 }
-
- icmp OBJECT IDENTIFIER ::= { mib-2 5 }
-
- tcp OBJECT IDENTIFIER ::= { mib-2 6 }
-
- udp OBJECT IDENTIFIER ::= { mib-2 7 }
-
- egp OBJECT IDENTIFIER ::= { mib-2 8 }
-
- -- historical (some say hysterical)
- -- cmot OBJECT IDENTIFIER ::= { mib-2 9 }
-
- transmission OBJECT IDENTIFIER ::= { mib-2 10 }
-
- snmp OBJECT IDENTIFIER ::= { mib-2 11 }
-
-
- -- the System group
-
- -- Implementation of the System group is mandatory for all
- -- systems. If an agent is not configured to have a value
- -- for any of these variables, a string of length 0 is
- -- returned.
-
- sysDescr OBJECT-TYPE
- SYNTAX DisplayString (SIZE (0..255))
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A textual description of the entity. This value
- should include the full name and version
- identification of the system's hardware type,
- software operating-system, and networking
- software. It is mandatory that this only contain
- printable ASCII characters."
- ::= { system 1 }
-
- sysObjectID OBJECT-TYPE
- SYNTAX OBJECT IDENTIFIER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The vendor's authoritative identification of the
- network management subsystem contained in the
- entity. This value is allocated within the SMI
- enterprises subtree (1.3.6.1.4.1) and provides an
- easy and unambiguous means for determining `what
- kind of box' is being managed. For example, if
- vendor `Flintstones, Inc.' was assigned the
- subtree 1.3.6.1.4.1.4242, it could assign the
- identifier 1.3.6.1.4.1.4242.1.1 to its `Fred
- Router'."
- ::= { system 2 }
-
- sysUpTime OBJECT-TYPE
- SYNTAX TimeTicks
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The time (in hundredths of a second) since the
- network management portion of the system was last
- re-initialized."
- ::= { system 3 }
-
- sysContact OBJECT-TYPE
- SYNTAX DisplayString (SIZE (0..255))
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The textual identification of the contact person
- for this managed node, together with information
- on how to contact this person."
- ::= { system 4 }
-
- sysName OBJECT-TYPE
- SYNTAX DisplayString (SIZE (0..255))
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "An administratively-assigned name for this
- managed node. By convention, this is the node's
- fully-qualified domain name."
- ::= { system 5 }
-
- sysLocation OBJECT-TYPE
- SYNTAX DisplayString (SIZE (0..255))
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The physical location of this node (e.g.,
- `telephone closet, 3rd floor')."
- ::= { system 6 }
-
- sysServices OBJECT-TYPE
- SYNTAX INTEGER (0..127)
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A value which indicates the set of services that
- this entity primarily offers.
-
- The value is a sum. This sum initially takes the
- value zero, Then, for each layer, L, in the range
- 1 through 7, that this node performs transactions
- for, 2 raised to (L - 1) is added to the sum. For
- example, a node which performs primarily routing
- functions would have a value of 4 (2^(3-1)). In
- contrast, a node which is a host offering
- application services would have a value of 72
- (2^(4-1) + 2^(7-1)). Note that in the context of
- the Internet suite of protocols, values should be
- calculated accordingly:
-
- layer functionality
- 1 physical (e.g., repeaters)
- 2 datalink/subnetwork (e.g., bridges)
- 3 internet (e.g., IP gateways)
- 4 end-to-end (e.g., IP hosts)
- 7 applications (e.g., mail relays)
-
- For systems including OSI protocols, layers 5 and
- 6 may also be counted."
- ::= { system 7 }
-
- -- the Interfaces group
-
- -- Implementation of the Interfaces group is mandatory for
- -- all systems.
-
- ifNumber OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of network interfaces (regardless of
- their current state) present on this system."
- ::= { interfaces 1 }
-
-
- -- the Interfaces table
-
- -- The Interfaces table contains information on the entity's
- -- interfaces. Each interface is thought of as being
- -- attached to a `subnetwork'. Note that this term should
- -- not be confused with `subnet' which refers to an
- -- addressing partitioning scheme used in the Internet suite
- -- of protocols.
-
- ifTable OBJECT-TYPE
- SYNTAX SEQUENCE OF IfEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "A list of interface entries. The number of
- entries is given by the value of ifNumber."
- ::= { interfaces 2 }
-
- ifEntry OBJECT-TYPE
- SYNTAX IfEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "An interface entry containing objects at the
- subnetwork layer and below for a particular
- interface."
- INDEX { ifIndex }
- ::= { ifTable 1 }
-
- IfEntry ::=
- SEQUENCE {
- ifIndex
- INTEGER,
- ifDescr
- DisplayString,
- ifType
- IANAifType,
- ifMtu
- INTEGER,
- ifSpeed
- Gauge,
- ifPhysAddress
- PhysAddress,
- ifAdminStatus
- INTEGER,
- ifOperStatus
- INTEGER,
- ifLastChange
- TimeTicks,
- ifInOctets
- Counter,
- ifInUcastPkts
- Counter,
- ifInNUcastPkts
- Counter,
- ifInDiscards
- Counter,
- ifInErrors
- Counter,
- ifInUnknownProtos
- Counter,
- ifOutOctets
- Counter,
- ifOutUcastPkts
- Counter,
- ifOutNUcastPkts
- Counter,
- ifOutDiscards
- Counter,
- ifOutErrors
- Counter,
- ifOutQLen
- Gauge,
- ifSpecific
- OBJECT IDENTIFIER
- }
-
- ifIndex OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A unique value for each interface. Its value
- ranges between 1 and the value of ifNumber. The
- value for each interface must remain constant at
- least from one re-initialization of the entity's
- network management system to the next re-
- initialization."
- ::= { ifEntry 1 }
-
- ifDescr OBJECT-TYPE
- SYNTAX DisplayString (SIZE (0..255))
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A textual string containing information about the
- interface. This string should include the name of
- the manufacturer, the product name and the version
- of the hardware interface."
- ::= { ifEntry 2 }
-
- ifType OBJECT-TYPE
- SYNTAX IANAifType
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The type of interface. Additional values for ifType
- are assigned by the Internet Assigned Numbers
- Authority (IANA), through updating the syntax of the
- IANAifType textual convention."
- ::= { ifEntry 3 }
-
-
- ifMtu OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The size of the largest datagram which can be
- sent/received on the interface, specified in
- octets. For interfaces that are used for
- transmitting network datagrams, this is the size
- of the largest network datagram that can be sent
- on the interface."
- ::= { ifEntry 4 }
-
- ifSpeed OBJECT-TYPE
- SYNTAX Gauge
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "An estimate of the interface's current bandwidth
- in bits per second. For interfaces which do not
- vary in bandwidth or for those where no accurate
- estimation can be made, this object should contain
- the nominal bandwidth."
- ::= { ifEntry 5 }
-
- ifPhysAddress OBJECT-TYPE
- SYNTAX PhysAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The interface's address at the protocol layer
- immediately `below' the network layer in the
- protocol stack. For interfaces which do not have
- such an address (e.g., a serial line), this object
- should contain an octet string of zero length."
- ::= { ifEntry 6 }
-
- ifAdminStatus OBJECT-TYPE
- SYNTAX INTEGER {
- up(1), -- ready to pass packets
- down(2),
- testing(3) -- in some test mode
- }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The desired state of the interface. The
- testing(3) state indicates that no operational
- packets can be passed."
- ::= { ifEntry 7 }
-
- ifOperStatus OBJECT-TYPE
- SYNTAX INTEGER {
- up(1), -- ready to pass packets
- down(2),
- testing(3), -- in some test mode
- unknown(4),
- dormant(5)
- }
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The current operational state of the interface.
- The testing(3) state indicates that no operational
- packets can be passed."
- ::= { ifEntry 8 }
-
- ifLastChange OBJECT-TYPE
- SYNTAX TimeTicks
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The value of sysUpTime at the time the interface
- entered its current operational state. If the
- current state was entered prior to the last re-
- initialization of the local network management
- subsystem, then this object contains a zero
- value."
- ::= { ifEntry 9 }
-
- ifInOctets OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of octets received on the
- interface, including framing characters."
- ::= { ifEntry 10 }
-
- ifInUcastPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of subnetwork-unicast packets
- delivered to a higher-layer protocol."
- ::= { ifEntry 11 }
-
- ifInNUcastPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of non-unicast (i.e., subnetwork-
- broadcast or subnetwork-multicast) packets
- delivered to a higher-layer protocol."
- ::= { ifEntry 12 }
-
- ifInDiscards OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of inbound packets which were chosen
- to be discarded even though no errors had been
- detected to prevent their being deliverable to a
- higher-layer protocol. One possible reason for
- discarding such a packet could be to free up
- buffer space."
- ::= { ifEntry 13 }
-
- ifInErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of inbound packets that contained
- errors preventing them from being deliverable to a
- higher-layer protocol."
- ::= { ifEntry 14 }
-
- ifInUnknownProtos OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of packets received via the interface
- which were discarded because of an unknown or
- unsupported protocol."
- ::= { ifEntry 15 }
-
- ifOutOctets OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of octets transmitted out of the
- interface, including framing characters."
- ::= { ifEntry 16 }
-
- ifOutUcastPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of packets that higher-level
- protocols requested be transmitted to a
- subnetwork-unicast address, including those that
- were discarded or not sent."
- ::= { ifEntry 17 }
-
- ifOutNUcastPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of packets that higher-level
- protocols requested be transmitted to a non-
- unicast (i.e., a subnetwork-broadcast or
- subnetwork-multicast) address, including those
- that were discarded or not sent."
- ::= { ifEntry 18 }
-
- ifOutDiscards OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of outbound packets which were chosen
- to be discarded even though no errors had been
- detected to prevent their being transmitted. One
- possible reason for discarding such a packet could
- be to free up buffer space."
- ::= { ifEntry 19 }
-
- ifOutErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of outbound packets that could not be
- transmitted because of errors."
- ::= { ifEntry 20 }
-
- ifOutQLen OBJECT-TYPE
- SYNTAX Gauge
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The length of the output packet queue (in
- packets)."
- ::= { ifEntry 21 }
-
- ifSpecific OBJECT-TYPE
- SYNTAX OBJECT IDENTIFIER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A reference to MIB definitions specific to the
- particular media being used to realize the
- interface. For example, if the interface is
- realized by an ethernet, then the value of this
- object refers to a document defining objects
- specific to ethernet. If this information is not
- present, its value should be set to the OBJECT
- IDENTIFIER { 0 0 }, which is a syntactically valid
- object identifier, and any conformant
- implementation of ASN.1 and BER must be able to
- generate and recognize this value."
- ::= { ifEntry 22 }
-
-
- -- the Address Translation group
-
- -- Implementation of the Address Translation group is
- -- mandatory for all systems. Note however that this group
- -- is deprecated by MIB-II. That is, it is being included
- -- solely for compatibility with MIB-I nodes, and will most
- -- likely be excluded from MIB-III nodes. From MIB-II and
- -- onwards, each network protocol group contains its own
- -- address translation tables.
-
- -- The Address Translation group contains one table which is
- -- the union across all interfaces of the translation tables
- -- for converting a NetworkAddress (e.g., an IP address) into
- -- a subnetwork-specific address. For lack of a better term,
- -- this document refers to such a subnetwork-specific address
- -- as a `physical' address.
-
- -- Examples of such translation tables are: for broadcast
- -- media where ARP is in use, the translation table is
- -- equivalent to the ARP cache; or, on an X.25 network where
- -- non-algorithmic translation to X.121 addresses is
- -- required, the translation table contains the
- -- NetworkAddress to X.121 address equivalences.
-
- atTable OBJECT-TYPE
- SYNTAX SEQUENCE OF AtEntry
- ACCESS not-accessible
- STATUS deprecated
- DESCRIPTION
- "The Address Translation tables contain the
- NetworkAddress to `physical' address equivalences.
- Some interfaces do not use translation tables for
- determining address equivalences (e.g., DDN-X.25
- has an algorithmic method); if all interfaces are
- of this type, then the Address Translation table
- is empty, i.e., has zero entries."
- ::= { at 1 }
-
- atEntry OBJECT-TYPE
- SYNTAX AtEntry
- ACCESS not-accessible
- STATUS deprecated
- DESCRIPTION
- "Each entry contains one NetworkAddress to
- `physical' address equivalence."
- INDEX { atIfIndex,
- atNetAddress }
- ::= { atTable 1 }
-
- AtEntry ::=
- SEQUENCE {
- atIfIndex
- INTEGER,
- atPhysAddress
- PhysAddress,
- atNetAddress
- NetworkAddress
- }
-
- atIfIndex OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS deprecated
- DESCRIPTION
- "The interface on which this entry's equivalence
- is effective. The interface identified by a
- particular value of this index is the same
- interface as identified by the same value of
- ifIndex."
- ::= { atEntry 1 }
-
- atPhysAddress OBJECT-TYPE
- SYNTAX PhysAddress
- ACCESS read-write
- STATUS deprecated
- DESCRIPTION
- "The media-dependent `physical' address.
-
- Setting this object to a null string (one of zero
- length) has the effect of invaliding the
- corresponding entry in the atTable object. That
- is, it effectively disassociates the interface
- identified with said entry from the mapping
- identified with said entry. It is an
- implementation-specific matter as to whether the
- agent removes an invalidated entry from the table.
- Accordingly, management stations must be prepared
- to receive tabular information from agents that
- corresponds to entries not currently in use.
- Proper interpretation of such entries requires
- examination of the relevant atPhysAddress object."
- ::= { atEntry 2 }
-
- atNetAddress OBJECT-TYPE
- SYNTAX NetworkAddress
- ACCESS read-write
- STATUS deprecated
- DESCRIPTION
- "The NetworkAddress (e.g., the IP address)
- corresponding to the media-dependent `physical'
- address."
- ::= { atEntry 3 }
-
-
- -- the IP group
-
- -- Implementation of the IP group is mandatory for all
- -- systems.
-
- ipForwarding OBJECT-TYPE
- SYNTAX INTEGER {
- forwarding(1), -- acting as a gateway
- not-forwarding(2) -- NOT acting as a gateway
- }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The indication of whether this entity is acting
- as an IP gateway in respect to the forwarding of
- datagrams received by, but not addressed to, this
- entity. IP gateways forward datagrams. IP hosts
- do not (except those source-routed via the host).
-
- Note that for some managed nodes, this object may
- take on only a subset of the values possible.
- Accordingly, it is appropriate for an agent to
- return a `badValue' response if a management
- station attempts to change this object to an
- inappropriate value."
- ::= { ip 1 }
-
- ipDefaultTTL OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The default value inserted into the Time-To-Live
- field of the IP header of datagrams originated at
- this entity, whenever a TTL value is not supplied
- by the transport layer protocol."
- ::= { ip 2 }
-
- ipInReceives OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of input datagrams received from
- interfaces, including those received in error."
- ::= { ip 3 }
-
- ipInHdrErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of input datagrams discarded due to
- errors in their IP headers, including bad
- checksums, version number mismatch, other format
- errors, time-to-live exceeded, errors discovered
- in processing their IP options, etc."
- ::= { ip 4 }
-
- ipInAddrErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of input datagrams discarded because
- the IP address in their IP header's destination
- field was not a valid address to be received at
- this entity. This count includes invalid
- addresses (e.g., 0.0.0.0) and addresses of
- unsupported Classes (e.g., Class E). For entities
- which are not IP Gateways and therefore do not
- forward datagrams, this counter includes datagrams
- discarded because the destination address was not
- a local address."
- ::= { ip 5 }
-
- ipForwDatagrams OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of input datagrams for which this
- entity was not their final IP destination, as a
- result of which an attempt was made to find a
- route to forward them to that final destination.
- In entities which do not act as IP Gateways, this
- counter will include only those packets which were
- Source-Routed via this entity, and the Source-
- Route option processing was successful."
- ::= { ip 6 }
-
- ipInUnknownProtos OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of locally-addressed datagrams
- received successfully but discarded because of an
- unknown or unsupported protocol."
- ::= { ip 7 }
-
- ipInDiscards OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of input IP datagrams for which no
- problems were encountered to prevent their
- continued processing, but which were discarded
- (e.g., for lack of buffer space). Note that this
- counter does not include any datagrams discarded
- while awaiting re-assembly."
- ::= { ip 8 }
-
- ipInDelivers OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of input datagrams successfully
- delivered to IP user-protocols (including ICMP)."
- ::= { ip 9 }
-
- ipOutRequests OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of IP datagrams which local IP
- user-protocols (including ICMP) supplied to IP in
- requests for transmission. Note that this counter
- does not include any datagrams counted in
- ipForwDatagrams."
- ::= { ip 10 }
-
- ipOutDiscards OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of output IP datagrams for which no
- problem was encountered to prevent their
- transmission to their destination, but which were
- discarded (e.g., for lack of buffer space). Note
- that this counter would include datagrams counted
- in ipForwDatagrams if any such packets met this
- (discretionary) discard criterion."
- ::= { ip 11 }
-
- ipOutNoRoutes OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP datagrams discarded because no
- route could be found to transmit them to their
- destination. Note that this counter includes any
- packets counted in ipForwDatagrams which meet this
- `no-route' criterion. Note that this includes any
- datagrams which a host cannot route because all of
- its default gateways are down."
- ::= { ip 12 }
-
- ipReasmTimeout OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The maximum number of seconds which received
- fragments are held while they are awaiting
- reassembly at this entity."
- ::= { ip 13 }
-
- ipReasmReqds OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP fragments received which needed
- to be reassembled at this entity."
- ::= { ip 14 }
-
- ipReasmOKs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP datagrams successfully re-
- assembled."
- ::= { ip 15 }
-
- ipReasmFails OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of failures detected by the IP re-
- assembly algorithm (for whatever reason: timed
- out, errors, etc). Note that this is not
- necessarily a count of discarded IP fragments
- since some algorithms (notably the algorithm in
- RFC 815) can lose track of the number of fragments
- by combining them as they are received."
- ::= { ip 16 }
-
- ipFragOKs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP datagrams that have been
- successfully fragmented at this entity."
- ::= { ip 17 }
-
- ipFragFails OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP datagrams that have been
- discarded because they needed to be fragmented at
- this entity but could not be, e.g., because their
- Don't Fragment flag was set."
- ::= { ip 18 }
-
- ipFragCreates OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of IP datagram fragments that have
- been generated as a result of fragmentation at
- this entity."
- ::= { ip 19 }
-
-
-
- -- the IP address table
-
- -- The IP address table contains this entity's IP addressing
- -- information.
-
- ipAddrTable OBJECT-TYPE
- SYNTAX SEQUENCE OF IpAddrEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "The table of addressing information relevant to
- this entity's IP addresses."
- ::= { ip 20 }
-
- ipAddrEntry OBJECT-TYPE
- SYNTAX IpAddrEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "The addressing information for one of this
- entity's IP addresses."
- INDEX { ipAdEntAddr }
- ::= { ipAddrTable 1 }
-
- IpAddrEntry ::=
- SEQUENCE {
- ipAdEntAddr
- IpAddress,
- ipAdEntIfIndex
- INTEGER,
- ipAdEntNetMask
- IpAddress,
- ipAdEntBcastAddr
- INTEGER,
- ipAdEntReasmMaxSize
- INTEGER (0..65535)
- }
-
- ipAdEntAddr OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The IP address to which this entry's addressing
- information pertains."
- ::= { ipAddrEntry 1 }
-
-
- ipAdEntIfIndex OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The index value which uniquely identifies the
- interface to which this entry is applicable. The
- interface identified by a particular value of this
- index is the same interface as identified by the
- same value of ifIndex."
- ::= { ipAddrEntry 2 }
-
- ipAdEntNetMask OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The subnet mask associated with the IP address of
- this entry. The value of the mask is an IP
- address with all the network bits set to 1 and all
- the hosts bits set to 0."
- ::= { ipAddrEntry 3 }
-
- ipAdEntBcastAddr OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The value of the least-significant bit in the IP
- broadcast address used for sending datagrams on
- the (logical) interface associated with the IP
- address of this entry. For example, when the
- Internet standard all-ones broadcast address is
- used, the value will be 1. This value applies to
- both the subnet and network broadcasts addresses
- used by the entity on this (logical) interface."
- ::= { ipAddrEntry 4 }
-
- ipAdEntReasmMaxSize OBJECT-TYPE
- SYNTAX INTEGER (0..65535)
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The size of the largest IP datagram which this
- entity can re-assemble from incoming IP fragmented
- datagrams received on this interface."
- ::= { ipAddrEntry 5 }
-
- -- the IP routing table
-
- -- The IP routing table contains an entry for each route
- -- presently known to this entity.
-
- ipRouteTable OBJECT-TYPE
- SYNTAX SEQUENCE OF IpRouteEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "This entity's IP Routing table."
- ::= { ip 21 }
-
- ipRouteEntry OBJECT-TYPE
- SYNTAX IpRouteEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "A route to a particular destination."
- INDEX { ipRouteDest }
- ::= { ipRouteTable 1 }
-
- IpRouteEntry ::=
- SEQUENCE {
- ipRouteDest
- IpAddress,
- ipRouteIfIndex
- INTEGER,
- ipRouteMetric1
- INTEGER,
- ipRouteMetric2
- INTEGER,
- ipRouteMetric3
- INTEGER,
- ipRouteMetric4
- INTEGER,
- ipRouteNextHop
- IpAddress,
- ipRouteType
- INTEGER,
- ipRouteProto
- INTEGER,
- ipRouteAge
- INTEGER,
- ipRouteMask
- IpAddress,
- ipRouteMetric5
- INTEGER,
- ipRouteInfo
- OBJECT IDENTIFIER
- }
-
- ipRouteDest OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The destination IP address of this route. An
- entry with a value of 0.0.0.0 is considered a
- default route. Multiple routes to a single
- destination can appear in the table, but access to
- such multiple entries is dependent on the table-
- access mechanisms defined by the network
- management protocol in use."
- ::= { ipRouteEntry 1 }
-
- ipRouteIfIndex OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The index value which uniquely identifies the
- local interface through which the next hop of this
- route should be reached. The interface identified
- by a particular value of this index is the same
- interface as identified by the same value of
- ifIndex."
- ::= { ipRouteEntry 2 }
-
- ipRouteMetric1 OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The primary routing metric for this route. The
- semantics of this metric are determined by the
- routing-protocol specified in the route's
- ipRouteProto value. If this metric is not used,
- its value should be set to -1."
- ::= { ipRouteEntry 3 }
-
- ipRouteMetric2 OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "An alternate routing metric for this route. The
- semantics of this metric are determined by the
- routing-protocol specified in the route's
- ipRouteProto value. If this metric is not used,
- its value should be set to -1."
- ::= { ipRouteEntry 4 }
-
- ipRouteMetric3 OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "An alternate routing metric for this route. The
- semantics of this metric are determined by the
- routing-protocol specified in the route's
- ipRouteProto value. If this metric is not used,
- its value should be set to -1."
- ::= { ipRouteEntry 5 }
-
- ipRouteMetric4 OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "An alternate routing metric for this route. The
- semantics of this metric are determined by the
- routing-protocol specified in the route's
- ipRouteProto value. If this metric is not used,
- its value should be set to -1."
- ::= { ipRouteEntry 6 }
-
- ipRouteNextHop OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The IP address of the next hop of this route.
- (In the case of a route bound to an interface
- which is realized via a broadcast media, the value
- of this field is the agent's IP address on that
- interface.)"
- ::= { ipRouteEntry 7 }
-
- ipRouteType OBJECT-TYPE
- SYNTAX INTEGER {
- other(1), -- none of the following
-
- invalid(2), -- an invalidated route
- -- route to directly
- direct(3), -- connected (sub-)network
-
- -- route to a non-local
- indirect(4) -- host/network/sub-network
- }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The type of route. Note that the values
- direct(3) and indirect(4) refer to the notion of
- direct and indirect routing in the IP
- architecture.
-
- Setting this object to the value invalid(2) has
- the effect of invalidating the corresponding entry
- in the ipRouteTable object. That is, it
- effectively disassociates the destination
- identified with said entry from the route
- identified with said entry. It is an
- implementation-specific matter as to whether the
- agent removes an invalidated entry from the table.
- Accordingly, management stations must be prepared
- to receive tabular information from agents that
- corresponds to entries not currently in use.
- Proper interpretation of such entries requires
- examination of the relevant ipRouteType object."
- ::= { ipRouteEntry 8 }
-
- ipRouteProto OBJECT-TYPE
- SYNTAX INTEGER {
- other(1), -- none of the following
-
- -- non-protocol information,
- -- e.g., manually configured
- local(2), -- entries
-
- -- set via a network
- netmgmt(3), -- management protocol
-
- -- obtained via ICMP,
- icmp(4), -- e.g., Redirect
-
- -- the remaining values are
- -- all gateway routing
- -- protocols
- egp(5),
- ggp(6),
- hello(7),
- rip(8),
- is-is(9),
- es-is(10),
- ciscoIgrp(11),
- bbnSpfIgp(12),
- ospf(13),
- bgp(14)
- }
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The routing mechanism via which this route was
- learned. Inclusion of values for gateway routing
- protocols is not intended to imply that hosts
- should support those protocols."
- ::= { ipRouteEntry 9 }
-
- ipRouteAge OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The number of seconds since this route was last
- updated or otherwise determined to be correct.
- Note that no semantics of `too old' can be implied
- except through knowledge of the routing protocol
- by which the route was learned."
- ::= { ipRouteEntry 10 }
-
- ipRouteMask OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "Indicate the mask to be logical-ANDed with the
- destination address before being compared to the
- value in the ipRouteDest field. For those systems
- that do not support arbitrary subnet masks, an
- agent constructs the value of the ipRouteMask by
- determining whether the value of the correspondent
- ipRouteDest field belong to a class-A, B, or C
- network, and then using one of:
-
- mask network
- 255.0.0.0 class-A
- 255.255.0.0 class-B
- 255.255.255.0 class-C
-
- If the value of the ipRouteDest is 0.0.0.0 (a
- default route), then the mask value is also
- 0.0.0.0. It should be noted that all IP routing
- subsystems implicitly use this mechanism."
- ::= { ipRouteEntry 11 }
-
- ipRouteMetric5 OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "An alternate routing metric for this route. The
- semantics of this metric are determined by the
- routing-protocol specified in the route's
- ipRouteProto value. If this metric is not used,
- its value should be set to -1."
- ::= { ipRouteEntry 12 }
-
- ipRouteInfo OBJECT-TYPE
- SYNTAX OBJECT IDENTIFIER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "A reference to MIB definitions specific to the
- particular routing protocol which is responsible
- for this route, as determined by the value
- specified in the route's ipRouteProto value. If
- this information is not present, its value should
- be set to the OBJECT IDENTIFIER { 0 0 }, which is
- a syntactically valid object identifier, and any
- conformant implementation of ASN.1 and BER must be
- able to generate and recognize this value."
- ::= { ipRouteEntry 13 }
-
-
- -- the IP Address Translation table
-
- -- The IP address translation table contain the IpAddress to
- -- `physical' address equivalences. Some interfaces do not
- -- use translation tables for determining address
- -- equivalences (e.g., DDN-X.25 has an algorithmic method);
- -- if all interfaces are of this type, then the Address
- -- Translation table is empty, i.e., has zero entries.
-
- ipNetToMediaTable OBJECT-TYPE
- SYNTAX SEQUENCE OF IpNetToMediaEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "The IP Address Translation table used for mapping
- from IP addresses to physical addresses."
- ::= { ip 22 }
-
- ipNetToMediaEntry OBJECT-TYPE
- SYNTAX IpNetToMediaEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "Each entry contains one IpAddress to `physical'
- address equivalence."
- INDEX { ipNetToMediaIfIndex,
- ipNetToMediaNetAddress }
- ::= { ipNetToMediaTable 1 }
-
- IpNetToMediaEntry ::=
- SEQUENCE {
- ipNetToMediaIfIndex
- INTEGER,
- ipNetToMediaPhysAddress
- PhysAddress,
- ipNetToMediaNetAddress
- IpAddress,
- ipNetToMediaType
- INTEGER
- }
-
- ipNetToMediaIfIndex OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The interface on which this entry's equivalence
- is effective. The interface identified by a
- particular value of this index is the same
- interface as identified by the same value of
- ifIndex."
- ::= { ipNetToMediaEntry 1 }
-
- ipNetToMediaPhysAddress OBJECT-TYPE
- SYNTAX PhysAddress
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The media-dependent `physical' address."
- ::= { ipNetToMediaEntry 2 }
-
- ipNetToMediaNetAddress OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The IpAddress corresponding to the media-
- dependent `physical' address."
- ::= { ipNetToMediaEntry 3 }
-
- ipNetToMediaType OBJECT-TYPE
- SYNTAX INTEGER {
- other(1), -- none of the following
- invalid(2), -- an invalidated mapping
- dynamic(3),
- static(4)
- }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The type of mapping.
-
- Setting this object to the value invalid(2) has
- the effect of invalidating the corresponding entry
- in the ipNetToMediaTable. That is, it effectively
- disassociates the interface identified with said
- entry from the mapping identified with said entry.
- It is an implementation-specific matter as to
- whether the agent removes an invalidated entry
- from the table. Accordingly, management stations
- must be prepared to receive tabular information
- from agents that corresponds to entries not
- currently in use. Proper interpretation of such
- entries requires examination of the relevant
- ipNetToMediaType object."
- ::= { ipNetToMediaEntry 4 }
-
-
- -- additional IP objects
-
- ipRoutingDiscards OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of routing entries which were chosen
- to be discarded even though they are valid. One
- possible reason for discarding such an entry could
- be to free-up buffer space for other routing
- entries."
- ::= { ip 23 }
-
-
- -- the ICMP group
-
- -- Implementation of the ICMP group is mandatory for all
- -- systems.
-
- icmpInMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of ICMP messages which the
- entity received. Note that this counter includes
- all those counted by icmpInErrors."
- ::= { icmp 1 }
-
- icmpInErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP messages which the entity
- received but determined as having ICMP-specific
- errors (bad ICMP checksums, bad length, etc.)."
- ::= { icmp 2 }
-
- icmpInDestUnreachs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Destination Unreachable
- messages received."
- ::= { icmp 3 }
-
- icmpInTimeExcds OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Time Exceeded messages
- received."
- ::= { icmp 4 }
-
-
- icmpInParmProbs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Parameter Problem messages
- received."
- ::= { icmp 5 }
-
- icmpInSrcQuenchs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Source Quench messages
- received."
- ::= { icmp 6 }
-
- icmpInRedirects OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Redirect messages received."
- ::= { icmp 7 }
-
- icmpInEchos OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Echo (request) messages
- received."
- ::= { icmp 8 }
-
- icmpInEchoReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Echo Reply messages received."
- ::= { icmp 9 }
-
- icmpInTimestamps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Timestamp (request) messages
- received."
- ::= { icmp 10 }
-
- icmpInTimestampReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Timestamp Reply messages
- received."
- ::= { icmp 11 }
-
- icmpInAddrMasks OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Address Mask Request messages
- received."
- ::= { icmp 12 }
-
- icmpInAddrMaskReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Address Mask Reply messages
- received."
- ::= { icmp 13 }
-
- icmpOutMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of ICMP messages which this
- entity attempted to send. Note that this counter
- includes all those counted by icmpOutErrors."
- ::= { icmp 14 }
-
- icmpOutErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP messages which this entity did
- not send due to problems discovered within ICMP
- such as a lack of buffers. This value should not
- include errors discovered outside the ICMP layer
- such as the inability of IP to route the resultant
- datagram. In some implementations there may be no
- types of error which contribute to this counter's
- value."
- ::= { icmp 15 }
-
- icmpOutDestUnreachs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Destination Unreachable
- messages sent."
- ::= { icmp 16 }
-
- icmpOutTimeExcds OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Time Exceeded messages sent."
- ::= { icmp 17 }
-
- icmpOutParmProbs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Parameter Problem messages
- sent."
- ::= { icmp 18 }
-
- icmpOutSrcQuenchs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Source Quench messages sent."
- ::= { icmp 19 }
-
- icmpOutRedirects OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Redirect messages sent. For a
- host, this object will always be zero, since hosts
- do not send redirects."
- ::= { icmp 20 }
-
- icmpOutEchos OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Echo (request) messages sent."
- ::= { icmp 21 }
-
- icmpOutEchoReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Echo Reply messages sent."
- ::= { icmp 22 }
-
- icmpOutTimestamps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Timestamp (request) messages
- sent."
- ::= { icmp 23 }
-
- icmpOutTimestampReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Timestamp Reply messages
- sent."
- ::= { icmp 24 }
-
- icmpOutAddrMasks OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Address Mask Request messages
- sent."
- ::= { icmp 25 }
-
-
- icmpOutAddrMaskReps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of ICMP Address Mask Reply messages
- sent."
- ::= { icmp 26 }
-
-
- -- the TCP group
-
- -- Implementation of the TCP group is mandatory for all
- -- systems that implement the TCP.
-
- -- Note that instances of object types that represent
- -- information about a particular TCP connection are
- -- transient; they persist only as long as the connection
- -- in question.
-
- tcpRtoAlgorithm OBJECT-TYPE
- SYNTAX INTEGER {
- other(1), -- none of the following
-
- constant(2), -- a constant rto
- rsre(3), -- MIL-STD-1778, Appendix B
- vanj(4) -- Van Jacobson's algorithm [10]
- }
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The algorithm used to determine the timeout value
- used for retransmitting unacknowledged octets."
- ::= { tcp 1 }
-
- tcpRtoMin OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The minimum value permitted by a TCP
- implementation for the retransmission timeout,
- measured in milliseconds. More refined semantics
- for objects of this type depend upon the algorithm
- used to determine the retransmission timeout. In
- particular, when the timeout algorithm is rsre(3),
- an object of this type has the semantics of the
- LBOUND quantity described in RFC 793."
- ::= { tcp 2 }
-
-
- tcpRtoMax OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The maximum value permitted by a TCP
- implementation for the retransmission timeout,
- measured in milliseconds. More refined semantics
- for objects of this type depend upon the algorithm
- used to determine the retransmission timeout. In
- particular, when the timeout algorithm is rsre(3),
- an object of this type has the semantics of the
- UBOUND quantity described in RFC 793."
- ::= { tcp 3 }
-
- tcpMaxConn OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The limit on the total number of TCP connections
- the entity can support. In entities where the
- maximum number of connections is dynamic, this
- object should contain the value -1."
- ::= { tcp 4 }
-
- tcpActiveOpens OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of times TCP connections have made a
- direct transition to the SYN-SENT state from the
- CLOSED state."
- ::= { tcp 5 }
-
- tcpPassiveOpens OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of times TCP connections have made a
- direct transition to the SYN-RCVD state from the
- LISTEN state."
- ::= { tcp 6 }
-
- tcpAttemptFails OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of times TCP connections have made a
- direct transition to the CLOSED state from either
- the SYN-SENT state or the SYN-RCVD state, plus the
- number of times TCP connections have made a direct
- transition to the LISTEN state from the SYN-RCVD
- state."
- ::= { tcp 7 }
-
- tcpEstabResets OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of times TCP connections have made a
- direct transition to the CLOSED state from either
- the ESTABLISHED state or the CLOSE-WAIT state."
- ::= { tcp 8 }
-
- tcpCurrEstab OBJECT-TYPE
- SYNTAX Gauge
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of TCP connections for which the
- current state is either ESTABLISHED or CLOSE-
- WAIT."
- ::= { tcp 9 }
-
- tcpInSegs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of segments received, including
- those received in error. This count includes
- segments received on currently established
- connections."
- ::= { tcp 10 }
-
- tcpOutSegs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of segments sent, including
- those on current connections but excluding those
- containing only retransmitted octets."
- ::= { tcp 11 }
-
- tcpRetransSegs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of segments retransmitted - that
- is, the number of TCP segments transmitted
- containing one or more previously transmitted
- octets."
- ::= { tcp 12 }
-
-
- -- the TCP Connection table
-
- -- The TCP connection table contains information about this
- -- entity's existing TCP connections.
-
- tcpConnTable OBJECT-TYPE
- SYNTAX SEQUENCE OF TcpConnEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "A table containing TCP connection-specific
- information."
- ::= { tcp 13 }
-
- tcpConnEntry OBJECT-TYPE
- SYNTAX TcpConnEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "Information about a particular current TCP
- connection. An object of this type is transient,
- in that it ceases to exist when (or soon after)
- the connection makes the transition to the CLOSED
- state."
- INDEX { tcpConnLocalAddress,
- tcpConnLocalPort,
- tcpConnRemAddress,
- tcpConnRemPort }
- ::= { tcpConnTable 1 }
-
- TcpConnEntry ::=
- SEQUENCE {
- tcpConnState
- INTEGER,
- tcpConnLocalAddress
- IpAddress,
- tcpConnLocalPort
- INTEGER (0..65535),
- tcpConnRemAddress
- IpAddress,
- tcpConnRemPort
- INTEGER (0..65535)
- }
-
- tcpConnState OBJECT-TYPE
- SYNTAX INTEGER {
- closed(1),
- listen(2),
- synSent(3),
- synReceived(4),
- established(5),
- finWait1(6),
- finWait2(7),
- closeWait(8),
- lastAck(9),
- closing(10),
- timeWait(11),
- deleteTCB(12)
- }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "The state of this TCP connection.
-
- The only value which may be set by a management
- station is deleteTCB(12). Accordingly, it is
- appropriate for an agent to return a `badValue'
- response if a management station attempts to set
- this object to any other value.
-
- If a management station sets this object to the
- value deleteTCB(12), then this has the effect of
- deleting the TCB (as defined in RFC 793) of the
- corresponding connection on the managed node,
- resulting in immediate termination of the
- connection.
-
- As an implementation-specific option, a RST
- segment may be sent from the managed node to the
- other TCP endpoint (note however that RST segments
- are not sent reliably)."
- ::= { tcpConnEntry 1 }
-
- tcpConnLocalAddress OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The local IP address for this TCP connection. In
- the case of a connection in the listen state which
- is willing to accept connections for any IP
- interface associated with the node, the value
- 0.0.0.0 is used."
- ::= { tcpConnEntry 2 }
-
- tcpConnLocalPort OBJECT-TYPE
- SYNTAX INTEGER (0..65535)
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The local port number for this TCP connection."
- ::= { tcpConnEntry 3 }
-
- tcpConnRemAddress OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The remote IP address for this TCP connection."
- ::= { tcpConnEntry 4 }
-
- tcpConnRemPort OBJECT-TYPE
- SYNTAX INTEGER (0..65535)
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The remote port number for this TCP connection."
- ::= { tcpConnEntry 5 }
-
-
- -- additional TCP objects
-
- tcpInErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of segments received in error
- (e.g., bad TCP checksums)."
- ::= { tcp 14 }
-
- tcpOutRsts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of TCP segments sent containing the
- RST flag."
- ::= { tcp 15 }
-
-
- -- the UDP group
-
- -- Implementation of the UDP group is mandatory for all
- -- systems which implement the UDP.
-
- udpInDatagrams OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of UDP datagrams delivered to
- UDP users."
- ::= { udp 1 }
-
- udpNoPorts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of received UDP datagrams for
- which there was no application at the destination
- port."
- ::= { udp 2 }
-
- udpInErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of received UDP datagrams that could
- not be delivered for reasons other than the lack
- of an application at the destination port."
- ::= { udp 3 }
-
- udpOutDatagrams OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of UDP datagrams sent from this
- entity."
- ::= { udp 4 }
-
-
- -- the UDP Listener table
-
- -- The UDP listener table contains information about this
- -- entity's UDP end-points on which a local application is
- -- currently accepting datagrams.
-
- udpTable OBJECT-TYPE
- SYNTAX SEQUENCE OF UdpEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "A table containing UDP listener information."
- ::= { udp 5 }
-
- udpEntry OBJECT-TYPE
- SYNTAX UdpEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "Information about a particular current UDP
- listener."
- INDEX { udpLocalAddress, udpLocalPort }
- ::= { udpTable 1 }
-
- UdpEntry ::=
- SEQUENCE {
- udpLocalAddress
- IpAddress,
- udpLocalPort
- INTEGER (0..65535)
- }
-
- udpLocalAddress OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The local IP address for this UDP listener. In
- the case of a UDP listener which is willing to
- accept datagrams for any IP interface associated
- with the node, the value 0.0.0.0 is used."
- ::= { udpEntry 1 }
-
- udpLocalPort OBJECT-TYPE
- SYNTAX INTEGER (0..65535)
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The local port number for this UDP listener."
- ::= { udpEntry 2 }
-
-
- -- the EGP group
-
- -- Implementation of the EGP group is mandatory for all
- -- systems which implement the EGP.
-
- egpInMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP messages received without
- error."
- ::= { egp 1 }
-
- egpInErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP messages received that proved
- to be in error."
- ::= { egp 2 }
-
- egpOutMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of locally generated EGP
- messages."
- ::= { egp 3 }
-
- egpOutErrors OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of locally generated EGP messages not
- sent due to resource limitations within an EGP
- entity."
- ::= { egp 4 }
-
-
- -- the EGP Neighbor table
-
- -- The EGP neighbor table contains information about this
- -- entity's EGP neighbors.
-
- egpNeighTable OBJECT-TYPE
- SYNTAX SEQUENCE OF EgpNeighEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "The EGP neighbor table."
- ::= { egp 5 }
-
- egpNeighEntry OBJECT-TYPE
- SYNTAX EgpNeighEntry
- ACCESS not-accessible
- STATUS mandatory
- DESCRIPTION
- "Information about this entity's relationship with
- a particular EGP neighbor."
- INDEX { egpNeighAddr }
- ::= { egpNeighTable 1 }
-
- EgpNeighEntry ::=
- SEQUENCE {
- egpNeighState
- INTEGER,
- egpNeighAddr
- IpAddress,
- egpNeighAs
- INTEGER,
- egpNeighInMsgs
- Counter,
- egpNeighInErrs
- Counter,
- egpNeighOutMsgs
- Counter,
- egpNeighOutErrs
- Counter,
- egpNeighInErrMsgs
- Counter,
- egpNeighOutErrMsgs
- Counter,
- egpNeighStateUps
- Counter,
- egpNeighStateDowns
- Counter,
- egpNeighIntervalHello
- INTEGER,
- egpNeighIntervalPoll
- INTEGER,
- egpNeighMode
- INTEGER,
- egpNeighEventTrigger
- INTEGER
- }
-
- egpNeighState OBJECT-TYPE
- SYNTAX INTEGER {
- idle(1),
- acquisition(2),
- down(3),
- up(4),
- cease(5)
- }
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The EGP state of the local system with respect to
- this entry's EGP neighbor. Each EGP state is
- represented by a value that is one greater than
- the numerical value associated with said state in
- RFC 904."
- ::= { egpNeighEntry 1 }
-
- egpNeighAddr OBJECT-TYPE
- SYNTAX IpAddress
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The IP address of this entry's EGP neighbor."
- ::= { egpNeighEntry 2 }
-
- egpNeighAs OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The autonomous system of this EGP peer. Zero
- should be specified if the autonomous system
- number of the neighbor is not yet known."
- ::= { egpNeighEntry 3 }
-
- egpNeighInMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP messages received without error
- from this EGP peer."
- ::= { egpNeighEntry 4 }
-
- egpNeighInErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP messages received from this EGP
- peer that proved to be in error (e.g., bad EGP
- checksum)."
- ::= { egpNeighEntry 5 }
-
- egpNeighOutMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of locally generated EGP messages to
- this EGP peer."
- ::= { egpNeighEntry 6 }
-
- egpNeighOutErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of locally generated EGP messages not
- sent to this EGP peer due to resource limitations
- within an EGP entity."
- ::= { egpNeighEntry 7 }
-
- egpNeighInErrMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP-defined error messages received
- from this EGP peer."
- ::= { egpNeighEntry 8 }
-
- egpNeighOutErrMsgs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP-defined error messages sent to
- this EGP peer."
- ::= { egpNeighEntry 9 }
-
- egpNeighStateUps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP state transitions to the UP
- state with this EGP peer."
- ::= { egpNeighEntry 10 }
-
- egpNeighStateDowns OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The number of EGP state transitions from the UP
- state to any other state with this EGP peer."
- ::= { egpNeighEntry 11 }
-
- egpNeighIntervalHello OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The interval between EGP Hello command
- retransmissions (in hundredths of a second). This
- represents the t1 timer as defined in RFC 904."
- ::= { egpNeighEntry 12 }
-
- egpNeighIntervalPoll OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The interval between EGP poll command
- retransmissions (in hundredths of a second). This
- represents the t3 timer as defined in RFC 904."
- ::= { egpNeighEntry 13 }
-
- egpNeighMode OBJECT-TYPE
- SYNTAX INTEGER { active(1), passive(2) }
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The polling mode of this EGP entity, either
- passive or active."
- ::= { egpNeighEntry 14 }
-
- egpNeighEventTrigger OBJECT-TYPE
- SYNTAX INTEGER { start(1), stop(2) }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "A control variable used to trigger operator-
- initiated Start and Stop events. When read, this
- variable always returns the most recent value that
- egpNeighEventTrigger was set to. If it has not
- been set since the last initialization of the
- network management subsystem on the node, it
- returns a value of `stop'.
-
- When set, this variable causes a Start or Stop
- event on the specified neighbor, as specified on
- pages 8-10 of RFC 904. Briefly, a Start event
- causes an Idle peer to begin neighbor acquisition
- and a non-Idle peer to reinitiate neighbor
- acquisition. A stop event causes a non-Idle peer
- to return to the Idle state until a Start event
- occurs, either via egpNeighEventTrigger or
- otherwise."
- ::= { egpNeighEntry 15 }
-
-
- -- additional EGP objects
-
- egpAs OBJECT-TYPE
- SYNTAX INTEGER
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The autonomous system number of this EGP entity."
- ::= { egp 6 }
-
- -- the Transmission group
-
- -- Based on the transmission media underlying each interface
- -- on a system, the corresponding portion of the Transmission
- -- group is mandatory for that system.
-
- -- When Internet-standard definitions for managing
- -- transmission media are defined, the transmission group is
- -- used to provide a prefix for the names of those objects.
-
- -- Typically, such definitions reside in the experimental
- -- portion of the MIB until they are "proven", then as a
- -- part of the Internet standardization process, the
- -- definitions are accordingly elevated and a new object
- -- identifier, under the transmission group is defined. By
- -- convention, the name assigned is:
- --
- -- type OBJECT IDENTIFIER ::= { transmission number }
- --
- -- where "type" is the symbolic value used for the media in
- -- the ifType column of the ifTable object, and "number" is
- -- the actual integer value corresponding to the symbol.
-
-
- -- the SNMP group
-
- -- Implementation of the SNMP group is mandatory for all
- -- systems which support an SNMP protocol entity. Some of
- -- the objects defined below will be zero-valued in those
- -- SNMP implementations that are optimized to support only
- -- those functions specific to either a management agent or
- -- a management station. In particular, it should be
- -- observed that the objects below refer to an SNMP entity,
- -- and there may be several SNMP entities residing on a
- -- managed node (e.g., if the node is hosting acting as
- -- a management station).
-
- snmpInPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of Messages delivered to the
- SNMP entity from the transport service."
- ::= { snmp 1 }
-
- snmpOutPkts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Messages which were
- passed from the SNMP protocol entity to the
- transport service."
- ::= { snmp 2 }
-
- snmpInBadVersions OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Messages which were
- delivered to the SNMP protocol entity and were for
- an unsupported SNMP version."
- ::= { snmp 3 }
-
- snmpInBadCommunityNames OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Messages delivered to
- the SNMP protocol entity which used a SNMP
- community name not known to said entity."
- ::= { snmp 4 }
-
- snmpInBadCommunityUses OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Messages delivered to
- the SNMP protocol entity which represented an SNMP
- operation which was not allowed by the SNMP
- community named in the Message."
- ::= { snmp 5 }
-
- snmpInASNParseErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of ASN.1 or BER errors
- encountered by the SNMP protocol entity when
- decoding received SNMP Messages."
- ::= { snmp 6 }
-
- -- { snmp 7 } is not used
-
- snmpInTooBigs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- delivered to the SNMP protocol entity and for
- which the value of the error-status field is
- `tooBig'."
- ::= { snmp 8 }
-
- snmpInNoSuchNames OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- delivered to the SNMP protocol entity and for
- which the value of the error-status field is
- `noSuchName'."
- ::= { snmp 9 }
-
- snmpInBadValues OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- delivered to the SNMP protocol entity and for
- which the value of the error-status field is
- `badValue'."
- ::= { snmp 10 }
-
- snmpInReadOnlys OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number valid SNMP PDUs which were
- delivered to the SNMP protocol entity and for
- which the value of the error-status field is
- `readOnly'. It should be noted that it is a
- protocol error to generate an SNMP PDU which
- contains the value `readOnly' in the error-status
- field, as such this object is provided as a means
- of detecting incorrect implementations of the
- SNMP."
- ::= { snmp 11 }
-
- snmpInGenErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- delivered to the SNMP protocol entity and for
- which the value of the error-status field is
- `genErr'."
- ::= { snmp 12 }
-
- snmpInTotalReqVars OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of MIB objects which have been
- retrieved successfully by the SNMP protocol entity
- as the result of receiving valid SNMP Get-Request
- and Get-Next PDUs."
- ::= { snmp 13 }
-
- snmpInTotalSetVars OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of MIB objects which have been
- altered successfully by the SNMP protocol entity
- as the result of receiving valid SNMP Set-Request
- PDUs."
- ::= { snmp 14 }
-
- snmpInGetRequests OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Request PDUs which
- have been accepted and processed by the SNMP
- protocol entity."
- ::= { snmp 15 }
-
- snmpInGetNexts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Next PDUs which have
- been accepted and processed by the SNMP protocol
- entity."
- ::= { snmp 16 }
-
- snmpInSetRequests OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Set-Request PDUs which
- have been accepted and processed by the SNMP
- protocol entity."
- ::= { snmp 17 }
-
- snmpInGetResponses OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Response PDUs which
- have been accepted and processed by the SNMP
- protocol entity."
- ::= { snmp 18 }
-
- snmpInTraps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Trap PDUs which have
- been accepted and processed by the SNMP protocol
- entity."
- ::= { snmp 19 }
-
- snmpOutTooBigs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- generated by the SNMP protocol entity and for
- which the value of the error-status field is
- `tooBig.'"
- ::= { snmp 20 }
-
- snmpOutNoSuchNames OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- generated by the SNMP protocol entity and for
- which the value of the error-status is
- `noSuchName'."
- ::= { snmp 21 }
-
- snmpOutBadValues OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- generated by the SNMP protocol entity and for
- which the value of the error-status field is
- `badValue'."
- ::= { snmp 22 }
-
- -- { snmp 23 } is not used
-
- snmpOutGenErrs OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP PDUs which were
- generated by the SNMP protocol entity and for
- which the value of the error-status field is
- `genErr'."
- ::= { snmp 24 }
-
- snmpOutGetRequests OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Request PDUs which
- have been generated by the SNMP protocol entity."
- ::= { snmp 25 }
-
- snmpOutGetNexts OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Next PDUs which have
- been generated by the SNMP protocol entity."
- ::= { snmp 26 }
-
- snmpOutSetRequests OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Set-Request PDUs which
- have been generated by the SNMP protocol entity."
- ::= { snmp 27 }
-
- snmpOutGetResponses OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Get-Response PDUs which
- have been generated by the SNMP protocol entity."
- ::= { snmp 28 }
-
- snmpOutTraps OBJECT-TYPE
- SYNTAX Counter
- ACCESS read-only
- STATUS mandatory
- DESCRIPTION
- "The total number of SNMP Trap PDUs which have
- been generated by the SNMP protocol entity."
- ::= { snmp 29 }
-
- snmpEnableAuthenTraps OBJECT-TYPE
- SYNTAX INTEGER { enabled(1), disabled(2) }
- ACCESS read-write
- STATUS mandatory
- DESCRIPTION
- "Indicates whether the SNMP agent process is
- permitted to generate authentication-failure
- traps. The value of this object overrides any
- configuration information; as such, it provides a
- means whereby all authentication-failure traps may
- be disabled.
-
- Note that it is strongly recommended that this
- object be stored in non-volatile memory so that it
- remains constant between re-initializations of the
- network management system."
- ::= { snmp 30 }
-
-END
diff --git a/ASNMP/tests/Address_Test.cpp b/ASNMP/tests/Address_Test.cpp
deleted file mode 100644
index fce2067ab31..00000000000
--- a/ASNMP/tests/Address_Test.cpp
+++ /dev/null
@@ -1,549 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Address_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Address family:
-// GenAddress, MacAddress, IpxAddress, IpAddress, UdpAddress
-// all which derive from abstract base class Address.
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/address.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Address_Test, "$Id$")
-
-// test the GenAddress interface
-/*
- */
-static void TestGenAddr()
-{
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress: Tests: var(expected) [actual]\n"));
-
- // the constructors and destructors
- GenAddress *ga1 = new GenAddress("1.2.3.4"); // use ipv4 address
- ACE_ASSERT(ga1->valid() == 1);
- GenAddress ga2(*ga1); // copy constructor;
- ACE_ASSERT(ga2.valid() == 1);
- GenAddress ga3("localhost");
- ACE_ASSERT(ga3.valid() == 1);
- GenAddress ga4; // default constructor
- ACE_ASSERT(ga4.valid() == 0);
- GenAddress ga5; // default constructor
- ACE_ASSERT(ga5.valid() == 0);
- GenAddress ga6("127.0.0.1:7"); // udp address
- ACE_ASSERT(ga6.valid() == 1);
- GenAddress ga7("01234567.89ABcDeF0123"); // ipx address
- ACE_ASSERT(ga7.valid() == 1);
- IpAddress ip("1.2.3.4");
- ACE_ASSERT(ip.valid() == 1);
- GenAddress ga8(ip); // Address conversion
- ACE_ASSERT(ga8.valid() == 1);
-
- const char *ptr = (const char *)ga8;
-
- ACE_ASSERT(ga1 != 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga1(\"1.2.3.4\") [%s]\n",
- ga1->to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2(ga1) [%s]\n",
- ga2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga3(\"localhost\") [%s]\n",
- ga3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga4(\"\") [%s]\n",
- ga4.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga6(\"127.0.0.1:7\") [%s]\n",
- ga6.to_string()));
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga7(\"01234567.89ABcDeF0123\") [%s]\n",
- ga7.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga8(\"1.2.3.4\") [%s]\n",
- ga8.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga8(\"1.2.3.4\") [%s]\n",
- ptr));
-
- // Test Assignment x = y, y = x
- ga5 = ga3; // regular assignment
- ga3 = ga3; // self assignment
- ACE_ASSERT(ga5 == ga3);
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga5=ga3(\"localhost\") [%s]\n",
- ga5.to_string()));
-
- addr_type a = ga2.get_type();
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"0\") [%d]\n",
- a));
- // udp address string
- a = ga6.get_type();
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"2\") [%d]\n",
- a));
-
- // udp address string
- a = ga7.get_type();
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) GenAddress:ga2.get_type(\"1\") [%d]\n",
- a));
-
- delete ga1, ga1 = 0;
-}
-
-/* public methods
- IpAddress( const char *inaddr = "");
- IpAddress( const IpAddress &ipaddr);
- IpAddress( const GenAddress &genaddr);
- ~IpAddress();
- SnmpSyntax& operator=( SnmpSyntax &val);
- IpAddress& operator=( const IpAddress &ipaddress);
- SnmpSyntax *clone() const;
- char *resolve_hostname(int &status);
- virtual char *to_string() ;
- virtual operator const char *() const;
- void mask( const IpAddress& ipaddr);
- virtual addr_type get_type() const;
- virtual SmiUINT32 get_syntax();
- int is_loopback() const;
- int is_multicast() const;
- int is_broadcast() const;
- int is_arpanet() const;
- */
-static void TestIpAddress()
-{
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress: Tests\n"));
-
- // constructors
- GenAddress ga("255.255.255.255");
- IpAddress ia1;
- IpAddress ia2("224.2.3.4");
- ACE_ASSERT(ia2.is_multicast());
- ACE_ASSERT(!ia2.is_loopback());
- IpAddress ia3("localhost");
- ACE_ASSERT(ia3.is_loopback());
- ACE_ASSERT(!ia3.is_multicast());
- IpAddress ia4(ia3);
- ACE_ASSERT(ia4.is_loopback());
- ACE_ASSERT(!ia4.is_multicast());
- IpAddress ia5(ga);
- ACE_ASSERT(ia5.is_broadcast());
- IpAddress ia6 = IpAddress("10.0.0.2");
- ACE_ASSERT(ia6.is_private());
- ACE_ASSERT(!ia6.is_multicast());
- ACE_ASSERT(!ia6.is_loopback());
-
- IpAddress ia7("172.16.0.1");
- ACE_ASSERT(ia7.is_private());
-
- IpAddress ia8("192.168.0.1");
- ACE_ASSERT(ia8.is_private());
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia1(\"\") [%s]\n",
- ia1.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia2(\"1.2.3.4\") [%s]\n",
- ia2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia3(\"127.0.0.1\") [%s]\n",
- ia3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia4(\"ia3\") [%s]\n",
- ia4.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia5(\"255.255.255.255\") [%s]\n",
- ia5.to_string()));
-
- // other routines
- int status = 1;
- const char *ptr = ia5.resolve_hostname(status);
- ACE_ASSERT(status == 0);
- ACE_ASSERT(ptr != 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia5.resolve_hostname():(\"\") [%s]\n",
- ptr));
-
- // now lets try one we setup with a hostname
- ptr = ia3.resolve_hostname(status);
- ACE_ASSERT(status == 0);
- ACE_ASSERT(ptr != 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:ia3.resolve_hostname()(\"localhost\") [%s]\n",
- ptr));
-
- ptr = (const char *)ia5;
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpAddress:(const char *)(\"255.255.255.255\") [%s]\n",
- ptr));
-
- ia2 = ia3;
- ACE_ASSERT(ia2 == ia3);
-
- ia4.mask(ia3); // mask with equal value should return same
- ACE_ASSERT(ia2 == ia3);
-
- ACE_ASSERT(ia1.get_type() == type_ip);
- ACE_ASSERT(ia1.valid() == 0);
- ACE_ASSERT(ia2.get_type() == type_ip);
- ACE_ASSERT(ia2.valid() == 1);
- ACE_ASSERT(ia3.get_type() == type_ip);
- ACE_ASSERT(ia3.valid() == 1);
- ACE_ASSERT(ia4.get_type() == type_ip);
- ACE_ASSERT(ia4.valid() == 1);
- ACE_ASSERT(ia5.get_type() == type_ip);
- ACE_ASSERT(ia5.valid() == 1);
-}
-
-
-// --------------- Netbios ---------------
-/*
- NetbiosAddress( const char *inaddr = "");
- NetbiosAddress( const NetbiosAddress& nbaddr);
- NetbiosAddress( const GenAddress& genaddr);
- ~NetbiosAddress();
- virtual char *to_string();
- NetbiosAddress& operator=( const NetbiosAddress &nbaddr);
- nb_service get_service_type() const;
- void set_service_type(nb_service nbservice);
- virtual operator const char *() const;
- virtual SmiUINT32 get_syntax();
- SnmpSyntax& operator=( SnmpSyntax &val);
- SnmpSyntax *clone() const;
- */
-static void TestNetbiosAddress()
-{
- NetbiosAddress n1;
- ACE_ASSERT(n1.valid() == 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n1(\"\") [%s]\n",
- n1.to_string()));
-
- NetbiosAddress n2(n1);
- ACE_ASSERT(n2.valid() == 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n2(n1) [%s]\n",
- n2.to_string()));
-
- NetbiosAddress n3("pcname");
- ACE_ASSERT(n3.valid() == 1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n3(\"pcname\") [%s]\n",
- n3.to_string()));
-
- NetbiosAddress n4("abcdefghigjklmn");
- n4.set_service_type(nb_workstation);
- ACE_ASSERT(n4.valid() == 1);
- ACE_ASSERT(n4.get_service_type() == nb_workstation);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n4(\"abcdefghigjklmn\") [%s]\n",
- n4.to_string()));
-
- NetbiosAddress n5("abcdefghigjklmno0xx");
- ACE_ASSERT(n5.valid() == 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) NetbiosAddress:n4(\"abcdefghigjklmno0xx\") [%s]\n",
- n5.to_string()));
-
- n1 = n4;
- ACE_ASSERT(n1 == n4);
- ACE_ASSERT(strcmp((const char *)n1, (const char *)n4) == 0);
-
- n1.set_service_type(nb_server);
- ACE_ASSERT(nb_server == n1.get_service_type());
-}
-
-// --------------- IPX ---------------
-/*
- IpxAddress( void);
- IpxAddress( const char *inaddr);
- IpxAddress( const IpxAddress &ipxaddr);
- IpxAddress( const GenAddress &genaddr);
- ~IpxAddress();
- virtual SmiUINT32 get_syntax();
- SnmpSyntax& operator=( SnmpSyntax &val);
- IpxAddress& operator=( const IpxAddress &ipxaddress);
- int get_hostid( MacAddress& mac);
- SnmpSyntax *clone() const;
- virtual operator const char *() const;
- virtual addr_type get_type() const;
-
-Ipx Address semantics: Total length must be 21
-// Must have a separator in it
-// First string length must be 8
-// Second string length must be 12
-// Each char must take on value 0-F
-//
-//
-// Input formats recognized
-//
-// XXXXXXXX.XXXXXXXXXXXX
-// XXXXXXXX:XXXXXXXXXXXX
-// XXXXXXXX-XXXXXXXXXXXX
-// XXXXXXXX.XXXXXX-XXXXXX
-// XXXXXXXX:XXXXXX-XXXXXX
-// XXXXXXXX-XXXXXX-XXXXXX
-
- */
-
-static void TestIpxAddress()
-{
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress: Tests\n"));
- IpxAddress xa1;
- ACE_ASSERT(xa1.valid() == 0);
- ACE_ASSERT(xa1.get_type() == type_ipx);
- GenAddress gen("01234567.0123456789AB");
- ACE_ASSERT(gen.valid() == 1);
- IpxAddress xa2("01234567.0123456789AB");
- ACE_ASSERT(xa2.get_type() == type_ipx);
- ACE_ASSERT(xa2.valid() == 1);
- IpxAddress xa3("01234567:0123456789AB");
- ACE_ASSERT(xa3.get_type() == type_ipx);
- ACE_ASSERT(xa3.valid() == 1);
- IpxAddress xa4("01234567-0123456789AB");
- ACE_ASSERT(xa4.get_type() == type_ipx);
- ACE_ASSERT(xa4.valid() == 1);
- IpxAddress xa5("01234567.012345-6789AB");
- ACE_ASSERT(xa5.get_type() == type_ipx);
- ACE_ASSERT(xa5.valid() == 1);
- IpxAddress xa6("01234567:012345-6789AB");
- ACE_ASSERT(xa6.get_type() == type_ipx);
- ACE_ASSERT(xa6.valid() == 1);
- IpxAddress xa7("01234567-012345-6789AB");
- ACE_ASSERT(xa7.get_type() == type_ipx);
- ACE_ASSERT(xa7.valid() == 1);
- IpxAddress xa8("01234567.");
- ACE_ASSERT(xa8.get_type() == type_ipx);
- ACE_ASSERT(xa8.valid() == 0);
- IpxAddress xa9(gen);
- ACE_ASSERT(xa9.valid() == 1);
- IpxAddress *xa10 = new IpxAddress(xa9);
- ACE_ASSERT(xa10->get_type() == type_ipx);
- ACE_ASSERT(xa10->valid() == 1);
- delete xa10;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa1(\"\") [%s]\n",
- xa1.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa2(\"01234567.0123456789AB\") [%s]\n",
- xa2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa3(\"01234567:0123456789A\") [%s]\n",
- xa3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa4(\"01234567-0123456789AB\") [%s]\n",
- xa4.to_string()));
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa5(\"01234567.012345-6789AB\") [%s]\n",
- xa5.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa6(\"01234567:012345-6789AB\") [%s]\n",
- xa6.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa7(\"01234567-012345-6789AB\") [%s]\n",
- xa7.to_string()));
-
- // assignment
- xa1 = xa3;
- ACE_ASSERT(xa1 == xa3);
- MacAddress mac;
- ACE_ASSERT(xa4.get_hostid(mac) == 1);
- ACE_ASSERT(mac.valid() == 1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa4:get_hostid(\"01:23:45:67:89:ab\") [%s]\n", mac.to_string()));
-
- const char *ptr = (const char *)xa7;
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) IpxAddress:xa7-ptr(\"01234567-012345-6789AB\") [%s]\n", ptr));
-
-}
-
-/*
- MacAddress( void);
-
- MacAddress( const char *inaddr);
- MacAddress( const MacAddress &macaddr);
- MacAddress( const GenAddress &genaddr);
- ~MacAddress();
-* SmiUINT32 get_syntax();
-* SnmpSyntax& operator=( SnmpSyntax &val);
- MacAddress& operator=( const MacAddress &macaddress);
-* SnmpSyntax *clone() const;
- virtual char *to_string();
- virtual operator const char *() const;
- virtual addr_type get_type() const;
- unsigned int hashFunction() const;
-
-// MAC address format
-//
-// MAC ADDRESS
-// 01 02 03 04 05 06
-// XX:XX:XX:XX:XX:XX
-// Valid input format
-//
-// XXXXXXXXXXXX
-// Total length must be 17
-// Each char must take on value 0-F
-//
-
-*/
-
-static void TestMacAddress()
-{
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress: Tests\n"));
-
- MacAddress ma1;
- ACE_ASSERT(ma1.valid() == 0);
- ACE_ASSERT(ma1.get_type() == type_mac);
- MacAddress ma2("01:23:45:67:89:AB");
- ACE_ASSERT(ma2.valid() == 1);
- ACE_ASSERT(ma2.get_type() == type_mac);
- MacAddress ma3("0123456789ABCEFGHI"); // invalid string
- ACE_ASSERT(ma3.valid() == 0);
- ACE_ASSERT(ma3.get_type() == type_mac);
- GenAddress ga("01:23:45:67:89:AB"); // mac address
- MacAddress ma4(ma2);
- ACE_ASSERT(ma4.valid() == 1);
- ACE_ASSERT(ma4.get_type() == type_mac);
- MacAddress ma5(ga);
- ACE_ASSERT(ma5.valid() == 0);
- ACE_ASSERT(ma5.get_type() == type_mac);
-
- ma1 = ma2;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma1(\"01:23:45:67:89:AB\") [%s]\n",
- ma1.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma2(\"01:23:45:67:89:AB\") [%s]\n",
- ma2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma3(\"\") [%s]\n",
- ma3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma4(\"01:23:45:67:89:AB\") [%s]\n",
- ma4.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma5(\"\") [%s]\n",
- ma5.to_string()));
- const char * ptr = (const char *)ma5;
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma5(\"\") [%s]\n",
- ptr));
-
- // hashFunction crashes if not usedwith valid fn
- int x = ma2.hashFunction();
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) MacAddress:ma2.hashFunction(\"483201\") [%d]\n",
- x));
-}
-
-/*
- UdpAddress( void);
- UdpAddress( const char *inaddr);
- UdpAddress( const UdpAddress &udpaddr);
- UdpAddress( const GenAddress &genaddr);
- UdpAddress( const IpAddress &ipaddr);
- ~UdpAddress();
- SmiUINT32 get_syntax();
- SnmpSyntax& operator=( SnmpSyntax &val);
- UdpAddress& operator=( const UdpAddress &udpaddr);
- SnmpSyntax *clone() const;
- virtual char *to_string() ;
- virtual operator const char *() const;
- void set_port( const unsigned short p);
- unsigned short get_port() const;
- virtual addr_type get_type() const;
-
- // look for port info @ the end of the string
- // port can be delineated by a ':' or a '/'
- // if neither are present then just treat it
- // like a normal IpAddress
-
- */
-
-static void TestUdpAddress()
-{
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress: Tests\n"));
-
- UdpAddress ua1;
- ACE_ASSERT(ua1.valid() == 0);
- ACE_ASSERT(ua1.get_type() == type_udp);
-
- // semantics of not setting the port here are bizzare?
- UdpAddress ua2("127.0.0.1:161");
- ACE_ASSERT(ua2.valid() == 1);
- ACE_ASSERT(ua2.get_type() == type_udp);
-
- UdpAddress ua3(ua2);
- ACE_ASSERT(ua3.valid() == 1);
- ACE_ASSERT(ua3.get_type() == type_udp);
-
- GenAddress ga("localhost");
- UdpAddress ua4(ga);
- ACE_ASSERT(ua4.valid() == 1);
- ACE_ASSERT(ua4.get_type() == type_udp);
-
- IpAddress ia("localhost");
- UdpAddress ua5(ga);
- ACE_ASSERT(ua5.valid() == 1);
- ACE_ASSERT(ua5.get_type() == type_udp);
-
- UdpAddress *ua6 = new UdpAddress("localhost:161");
- ACE_ASSERT(ua6->valid() == 1);
- ACE_ASSERT(ua6->get_type() == type_udp);
-
- UdpAddress ua7 = UdpAddress("localhost/162");
- ACE_ASSERT(ua7.valid() == 1);
- ACE_ASSERT(ua7.get_type() == type_udp);
-
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua1(\"\") [%s]\n",
- ua1.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua2(\"127.0.0.1:161\") [%s]\n",
- ua2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua3(ua2)(\"127.0.0.1:161\") [%s]\n",
- ua3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua4(GenAddress)(\"127.0.0.1\") [%s]\n",
- ua4.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua5(IpAddress)(\"127.0.0.1\") [%s]\n",
- ua5.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua6()(\"localhost:161\") [%s]\n",
- ua6->to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua7()(\"localhost/162\") [%s]\n",
- ua7.to_string()));
-
- delete ua6; // destructor
-
- // assignement tests.
- ua1 = ua2;
- ACE_ASSERT(ua1 == ua2);
- ACE_ASSERT(ua1.valid() == 1);
- ua1 = ua1;
- ACE_ASSERT(ua1 == ua1);
- ACE_ASSERT(ua1.valid() == 1);
-
- // set/get port
- ua1.set_port(333);
- ACE_ASSERT(ua1.get_port() == 333);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpAddress:ua1.set_port()(\"333\") [%s]\n",
- (const char *)ua1));
-
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Address_Test"));
-
- TestGenAddr();
- TestIpAddress();
- TestUdpAddress();
- TestMacAddress();
- TestNetbiosAddress();
- TestIpxAddress();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Counter64_Test.cpp b/ASNMP/tests/Counter64_Test.cpp
deleted file mode 100644
index f0b9ee8ad56..00000000000
--- a/ASNMP/tests/Counter64_Test.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Counter64_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Counter64 class. An Object
-// representing an ASN.1 Counter64 SMI 64 bit Integer SYNTAX.
-// (SNMPv2c)
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/ctr64.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Counter64_Test, "$Id$")
-
-// TODO: verify this with ACE folks
-#if defined(_WIN32)
-#define LLONG __int64
-#define ULLONG unsigned __int64
-#else
-#define LLONG long long
-#define ULLONG unsigned long long
-#endif
-
-/*
- Counter64( unsigned long long llw = 0);
- Counter64( unsigned long hiparm, unsigned long loparm);
- Counter64( const Counter64 &ctr64);
- ~Counter64();
- SmiUINT32 get_syntax();
- long double to_long_double() const;
- Counter64& assign( long double ld);
- unsigned long high() const;
- unsigned long low() const;
- void set_high( const unsigned long h);
- void set_low( const unsigned long l);
- Counter64& operator=( const unsigned long long rhs);
- Counter64& operator=( const Counter64 &rhs);
- char *to_string();
- SnmpSyntax *clone() const;
- SnmpSyntax& operator=( SnmpSyntax &val);
- int valid() const;
- operator unsigned long long();
- */
-
-static void TestCounter64()
-{
-#if !defined (ACE_WIN32)
- static unsigned long ul = ULONG_MAX;
- LLONG ll = (LLONG) 0x7fffffffffffffffLL;
- LLONG mll = (LLONG) ((-ll) - 1);
- ULLONG ull = (ULLONG) 0xffffffffffffffffULL;
- long double ld = (LLONG) ll;
-
- cerr << "max unsigned long long is " << ull << endl;
- cerr << "max long long is " << ll << endl;
- cerr << "min long long is " << mll << endl;
-
- Counter64 c1;
- ACE_ASSERT(c1.valid() == 1);
- Counter64 c2(ul, ul);
- ACE_ASSERT(c2.valid() == 1);
- ACE_ASSERT(c2.high() == ul);
- ACE_ASSERT(c2.low() == ul);
-
- Counter64 c3(ul);
- ACE_ASSERT(c3.valid() == 1);
- ACE_ASSERT(c3.low() == ul);
-
- Counter64 c4(c2);
- ACE_ASSERT(c4.valid() == 1);
- ACE_ASSERT(c4.high() == ul);
- ACE_ASSERT(c4.low() == ul);
-
- Counter64 c5(0);
- ACE_ASSERT(c5.valid() == 1);
-
- Counter64 c6;
- c6.assign(ld);
- ACE_ASSERT(c6.to_long_double() == ld);
-
- Counter64 c7(ull);
- ACE_ASSERT(c7 == ull);
-
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c1(\"\") [%s]\n",
- c1.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c2(LONG_MAX,LONG_MAX) [%s]\n",
- c2.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c3(LONG_MAX) [%s]\n",
- c3.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c4(c2) [%s]\n",
- c4.to_string()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c5(0) [%s]\n",
- c5.to_string()));
-
- // misc routines
- c1.set_low(1);
- c1.set_high(2);
- ACE_ASSERT(c1.low() == 1);
- ACE_ASSERT(c1.high() == 2);
- // assignment
- c5 = c4;
- ACE_ASSERT(c5 == c4);
- c4 = c4;
- ACE_ASSERT(c5 == c4);
- c5 = ll;
- ACE_ASSERT(c5 == static_cast<ACE_UINT64> (ll));
- // try simple arithmetic (needs more test cases)
- c5 = mll;
- c5 = c5 + (ULLONG) 10;
- ACE_ASSERT(c5 == static_cast<ACE_UINT64> (mll + 10));
-#endif /*ACE_WIN32 */
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Counter64_Test"));
-
- TestCounter64();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Counter_Test.cpp b/ASNMP/tests/Counter_Test.cpp
deleted file mode 100644
index c6b4b4c9b72..00000000000
--- a/ASNMP/tests/Counter_Test.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Counter_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Counter class. An Object
-// representing an ASN.1 Counter SMI COUNTER SYNTAX.
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/counter.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Counter_Test, "$Id$")
-
-/*
- Counter32( void);
- Counter32( const unsigned long i);
- Counter32( const Counter32 &c);
-* SmiUINT32 get_syntax();
-* SnmpSyntax *clone() const;
-* SnmpSyntax& operator=( SnmpSyntax &val);
- Counter32& operator=( const Counter32 &uli);
- Counter32& operator=( const unsigned long i);
- operator unsigned long();
-
- -- comments tyis type appears to be a wrapper class and not
- a true SNMP counter. Practical for nms side,yet may lead to
- some confusion if implementing an agent with this class.
-
- Per RFC 1155 sec 3.2.3.3
- This application-wide type represents a non-negative integer which
- monotonically increases until it reaches a maximum value, when it
- wraps around and starts increasing again from zero. This memo
- specifies a maximum value of 2^32-1 for counters
-*/
-
-static void TestCounter()
-{
-#if !defined (ACE_WIN32)
- long l = LONG_MAX, nl = LONG_MIN; // limits.h
- unsigned long ul = ULONG_MAX, def = 0;
- int i = INT_MAX, ni = INT_MIN;
- unsigned int ui = UINT_MAX;
- unsigned short us = 10;
- short si = static_cast<short> (65535);
-
- // constructors
- Counter32 c1;
- ACE_ASSERT(c1 == def);
- Counter32 c2(l);
- ACE_ASSERT(c2 == static_cast<unsigned long> (l));
- Counter32 c3(nl);
- ACE_ASSERT(c3 == static_cast<unsigned long> (nl));
- Counter32 c4(ul);
- ACE_ASSERT(c4 == ul);
- Counter32 c5(i);
- ACE_ASSERT(c5 == static_cast<unsigned long> (i));
- Counter32 c6(ni);
- ACE_ASSERT(c6 == static_cast<unsigned long> (ni));
- Counter32 c7(ui);
- ACE_ASSERT(c7 == ui);
- Counter32 *c8 = new Counter32(c5);
- ACE_ASSERT(c8 != 0);
- delete c8;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c1(\"\") [%u]\n",
- (unsigned long)c1));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c2(\"%u\") [%u]\n",
- l, (unsigned long)c2));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c3(\"%u\") [%u]\n",
- nl, (unsigned long)c3));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c4(\"%u\") [%u]\n",
- ul, (unsigned long)c4));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c5(\"%u\") [%u]\n",
- i, (unsigned long)c5));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c6(\"%u\") [%u]\n",
- ni, (unsigned long)c6));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) c7(\"%u\") [%u]\n",
- ui, (unsigned long)c7));
-
- // assignent
- c1 = c2; // obj
- ACE_ASSERT(c1 == c2);
- c1 = c1; // self
- ACE_ASSERT(c1 == c1);
- c1 = def; // unsigned long
- ACE_ASSERT(c1 == def);
- c1 = us; // unsigned short
- ACE_ASSERT(c1 == static_cast<unsigned long> (us));
- c1 = si; // unsigned short
- ACE_ASSERT(c1 == static_cast<unsigned long> (si));
-#endif /*ACE_WIN32*/
-}
-
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Counter_Test"));
-
- TestCounter();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Gauge_Test.cpp b/ASNMP/tests/Gauge_Test.cpp
deleted file mode 100644
index 45a4ac279e7..00000000000
--- a/ASNMP/tests/Gauge_Test.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Guage_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Guage class. An Object
-// representing an ASN.1 Counter SMI GUAGE SYNTAX.
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/gauge.h"
-#include "test_config.h"
-
-ACE_RCSID (tests,
- Gauge_Test,
- "$Id$")
-
-/*
- Gauge32( void);
- Gauge32( const unsigned long i);
- Gauge32 ( const Gauge32 &g);
- ~Gauge32();
- SmiUINT32 get_syntax();
- SnmpSyntax *clone() const;
- Gauge32& operator=( const Gauge32 &uli);
- Gauge32& operator=( const unsigned long i);
- operator unsigned long();
- SnmpSyntax& operator=( SnmpSyntax &val);
-
--- What is a Gauge? According to RFC 1155 section: 3.2.3.4
- This application-wide type represents a non-negative integer
- which may increase or decrease, but which latches at a maximum
- value of 2^32-1 (4294967295 dec) for gauges.
- */
-static void
-TestGuage (void)
-{
-#if !defined (ACE_WIN32)
- long l = LONG_MAX, nl = LONG_MIN; // limits.h
- unsigned long ul = ULONG_MAX, def = 0;
- int i = INT_MAX, ni = INT_MIN;
- unsigned int ui = UINT_MAX;
- unsigned short us = 10;
- short si = static_cast<short> (65535);
-
- // constructors
- Gauge32 g1;
- ACE_ASSERT(g1 == def);
- Gauge32 g2(l);
- ACE_ASSERT(g2 == static_cast<unsigned long> (l));
- Gauge32 g3(nl);
- ACE_ASSERT(g3 == static_cast<unsigned long> (nl));
- Gauge32 g4(ul);
- ACE_ASSERT(g4 == ul);
- Gauge32 g5(i);
- ACE_ASSERT(g5 == static_cast<unsigned long> (i));
- Gauge32 g6(ni);
- ACE_ASSERT(g6 == static_cast<unsigned long> (ni));
- Gauge32 g7(ui);
- ACE_ASSERT(g7 == ui);
- Gauge32 *g8 = new Gauge32(g5);
- ACE_ASSERT(g8 != 0);
- delete g8;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g1(\"\") [%u]\n",
- (unsigned long)g1));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g2(\"%u\") [%u]\n",
- l, (unsigned long)g2));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g3(\"%u\") [%u]\n",
- nl, (unsigned long)g3));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g4(\"%u\") [%u]\n",
- ul, (unsigned long)g4));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g5(\"%u\") [%u]\n",
- i, (unsigned long)g5));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g6(\"%u\") [%u]\n",
- ni, (unsigned long)g6));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) g7(\"%u\") [%u]\n",
- ui, (unsigned long)g7));
-
- // assignent
- g1 = g2; // obj
- ACE_ASSERT(g1 == g2);
- g1 = g1; // self
- ACE_ASSERT(g1 == g1);
- g1 = def; // unsigned long
- ACE_ASSERT(g1 == def);
- g1 = us; // unsigned short
- ACE_ASSERT(g1 == static_cast<unsigned long> (us));
- g1 = si; // unsigned short
- ACE_ASSERT(g1 == static_cast<unsigned long> (si));
-#endif /*ACE_WIN32*/
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Gauge_Test"));
-
- TestGuage();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Integer_Test.cpp b/ASNMP/tests/Integer_Test.cpp
deleted file mode 100644
index 8cea7e33f1b..00000000000
--- a/ASNMP/tests/Integer_Test.cpp
+++ /dev/null
@@ -1,200 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Integer_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Integer class. An Object
-// representing an ASN.1 Integer64 SMI 32 bit Integer SYNTAX.
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/integer.h"
-#include "test_config.h"
-
-ACE_RCSID (tests,
- Integer_Test,
- "$Id$")
-
-#if !defined (ACE_WIN32)
-static long l = LONG_MAX, nl = LONG_MIN; // limits.h
-static unsigned long ul = ULONG_MAX, def = 0;
-static int i = INT_MAX, ni = INT_MIN;
-static unsigned int ui = UINT_MAX;
-static unsigned short us = 10;
-static unsigned short si = 32768;
- #endif /*ACE_WIN32*/
-
-/*
- SnmpInt32( void);
- SnmpInt32 (const long i);
- SnmpInt32 (const SnmpInt32 &c);
- virtual ~SnmpInt32();
- virtual SmiUINT32 get_syntax();
- SnmpInt32& operator=( const long i);
- SnmpInt32& operator=( const SnmpInt32 &li);
- operator long();
- char *to_string();
- SnmpSyntax *clone() const;
- SnmpSyntax& operator=( SnmpSyntax &val);
- int valid() const;
- */
-
-static void TestInteger32()
-{
-#if !defined (ACE_WIN32)
- // constructors
- SnmpInt32 i1;
- ACE_ASSERT(i1 == static_cast<long> (def));
- SnmpInt32 i2(l);
- ACE_ASSERT(i2 == l);
- SnmpInt32 i3(nl);
- ACE_ASSERT(i3 == nl);
- SnmpInt32 i4(ul);
- ACE_ASSERT(i4 == static_cast<long> (ul));
- SnmpInt32 i5(i);
- ACE_ASSERT(i5 == i);
- SnmpInt32 i6(ni);
- ACE_ASSERT(i6 == ni);
- SnmpInt32 i7(ui);
- ACE_ASSERT(i7 == static_cast<long> (ui));
- SnmpInt32 *i8 = new SnmpInt32(i5);
- ACE_ASSERT(i8 != 0);
- delete i8;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i1(\"\") [%u]\n",
- (unsigned long)i1));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i2(\"%u\") [%u]\n",
- l, (unsigned long)i2));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i3(\"%u\") [%u]\n",
- nl, (unsigned long)i3));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i4(\"%u\") [%u]\n",
- ul, (unsigned long)i4));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i5(\"%u\") [%u]\n",
- i, (unsigned long)i5));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i6(\"%u\") [%u]\n",
- ni, (unsigned long)i6));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) i7(\"%u\") [%u]\n",
- ui, (unsigned long)i7));
-
- // assignent
- i1 = i2; // obj
- ACE_ASSERT(i1 == i2);
- i1 = i1; // self
- ACE_ASSERT(i1 == i1);
- i1 = def; // unsigned long
- ACE_ASSERT(i1 == static_cast<long> (def));
- i1 = us; // unsigned short
- ACE_ASSERT(i1 == static_cast<long> (us));
- i1 = si; // unsigned short
- ACE_ASSERT(i1 == static_cast<long> (si));
- #endif /*ACE_WIN32*/
-}
-
-/*
- SnmpUInt32( void);
- SnmpUInt32 (const unsigned long i);
- SnmpUInt32( const SnmpUInt32 &c);
- virtual ~SnmpUInt32();
- virtual SmiUINT32 get_syntax();
- SnmpUInt32& operator=( const unsigned long i);
- SnmpUInt32& operator=( const SnmpUInt32 &uli);
- operator unsigned long();
- virtual char *to_string();
- virtual SnmpSyntax *clone() const;
- SnmpSyntax& operator=( SnmpSyntax &val);
- int valid() const;
- */
-static void TestUnsignedInteger32()
-{
-#if !defined (ACE_WIN32)
- // constructors
- SnmpUInt32 u1;
- ACE_ASSERT(u1 == def);
- SnmpUInt32 u2(l);
- ACE_ASSERT(u2 == static_cast<unsigned long> (l));
- SnmpUInt32 u3(nl);
- ACE_ASSERT(u3 == static_cast<unsigned long> (nl));
- SnmpUInt32 u4(ul);
- ACE_ASSERT(u4 == ul);
- SnmpUInt32 u5(i);
- ACE_ASSERT(u5 == static_cast<unsigned long> (i));
- SnmpUInt32 u6(ni);
- ACE_ASSERT(u6 == static_cast<unsigned long> (ni));
- SnmpUInt32 u7(ui);
- ACE_ASSERT(u7 == ui);
- SnmpUInt32 *u8 = new SnmpUInt32(u5);
- ACE_ASSERT(u8 != 0);
- delete u8;
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u1(\"\") [%u]\n",
- (unsigned long)u1));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u2(\"%u\") [%u]\n",
- l, (unsigned long)u2));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u3(\"%u\") [%u]\n",
- nl, (unsigned long)u3));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u4(\"%u\") [%u]\n",
- ul, (unsigned long)u4));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u5(\"%u\") [%u]\n",
- i, (unsigned long)u5));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u6(\"%u\") [%u]\n",
- ni, (unsigned long)u6));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) u7(\"%u\") [%u]\n",
- ui, (unsigned long)u7));
-
- // assignent
- u1 = u2; // obj
- ACE_ASSERT(u1 == u2);
- u1 = u1; // self
- ACE_ASSERT(u1 == u1);
- u1 = def; // unsigned long
- ACE_ASSERT(u1 == def);
- u1 = us; // unsigned short
- ACE_ASSERT(u1 == static_cast<unsigned long> (us));
- u1 = si; // unsigned short
- ACE_ASSERT(u1 == static_cast<unsigned long> (si));
-#endif /*ACE_WIN32 */
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Integer_Test"));
-
- TestInteger32();
-
- TestUnsignedInteger32();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Makefile.am b/ASNMP/tests/Makefile.am
deleted file mode 100644
index 0b9ae3d1ce7..00000000000
--- a/ASNMP/tests/Makefile.am
+++ /dev/null
@@ -1,164 +0,0 @@
-## Process this file with automake to create Makefile.in
-##
-## $Id$
-##
-## This file was generated by MPC. Any changes made directly to
-## this file will be lost the next time it is generated.
-##
-## MPC Command:
-## /acebuilds/ACE_wrappers-repository/bin/mwc.pl -include /acebuilds/MPC/config -include /acebuilds/MPC/templates -feature_file /acebuilds/ACE_wrappers-repository/local.features -noreldefs -type automake -exclude build,Kokyu
-
-ACE_BUILDDIR = $(top_builddir)
-ACE_ROOT = $(top_srcdir)
-
-## Makefile.asnmp_tests_Address_Test.am
-noinst_PROGRAMS = Address_Test
-
-Address_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Address_Test_SOURCES = \
- Address_Test.cpp \
- test_config.h
-
-Address_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Counter64_Test.am
-noinst_PROGRAMS += Counter64_Test
-
-Counter64_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Counter64_Test_SOURCES = \
- Counter64_Test.cpp \
- test_config.h
-
-Counter64_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Counter_Test.am
-noinst_PROGRAMS += Counter_Test
-
-Counter_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Counter_Test_SOURCES = \
- Counter_Test.cpp \
- test_config.h
-
-Counter_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Gauge_Test.am
-noinst_PROGRAMS += Gauge_Test
-
-Gauge_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Gauge_Test_SOURCES = \
- Gauge_Test.cpp \
- test_config.h
-
-Gauge_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Integer_Test.am
-noinst_PROGRAMS += Integer_Test
-
-Integer_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Integer_Test_SOURCES = \
- Integer_Test.cpp \
- test_config.h
-
-Integer_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Octet_Test.am
-noinst_PROGRAMS += Octet_Test
-
-Octet_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Octet_Test_SOURCES = \
- Octet_Test.cpp \
- test_config.h
-
-Octet_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Oid_Test.am
-noinst_PROGRAMS += Oid_Test
-
-Oid_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Oid_Test_SOURCES = \
- Oid_Test.cpp \
- test_config.h
-
-Oid_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Target_Test.am
-noinst_PROGRAMS += Target_Test
-
-Target_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Target_Test_SOURCES = \
- Target_Test.cpp \
- test_config.h
-
-Target_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Makefile.asnmp_tests_Varbind_Test.am
-noinst_PROGRAMS += Varbind_Test
-
-Varbind_Test_CPPFLAGS = \
- -I$(ACE_ROOT) \
- -I$(ACE_BUILDDIR) \
- -I$(ACE_ROOT)/ASNMP
-
-Varbind_Test_SOURCES = \
- Varbind_Test.cpp \
- test_config.h
-
-Varbind_Test_LDADD = \
- $(top_builddir)/ASNMP/asnmp/libasnmp.la \
- $(ACE_BUILDDIR)/ace/libACE.la
-
-## Clean up template repositories, etc.
-clean-local:
- -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.*
- -rm -f gcctemp.c gcctemp so_locations *.ics
- -rm -rf cxx_repository ptrepository ti_files
- -rm -rf templateregistry ir.out
- -rm -rf ptrepository SunWS_cache Templates.DB
diff --git a/ASNMP/tests/Octet_Test.cpp b/ASNMP/tests/Octet_Test.cpp
deleted file mode 100644
index a32f1cd2f09..00000000000
--- a/ASNMP/tests/Octet_Test.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Octet_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the OCTET class. An Object
-// representing an ASN.1 Integer64 SMI OCTET STRING SYNTAX.
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "ace/OS_NS_string.h"
-#include "asnmp/octet.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Octet_Test, "$Id$")
-
-/*
- OctetStr( const char *string, long size = -1);
- OctetStr ( const OctetStr &octet);
- ~OctetStr();
-
- SmiUINT32 get_syntax();
- void set_data( const SmiBYTE* string, long int size = -1);
- OctetStr& operator=( const char *string);
- OctetStr& operator=( const OctetStr &octet);
-
- bool operator==( const OctetStr &lhs, const OctetStr &rhs);
- bool operator!=( const OctetStr &lhs, const OctetStr &rhs);
- bool operator<( const OctetStr &lhs, const OctetStr &rhs);
- bool operator<=( const OctetStr &lhs,const OctetStr &rhs);
- bool operator>( const OctetStr &lhs, const OctetStr &rhs);
- bool operator>=( const OctetStr &lhs, const OctetStr &rhs);
- bool operator==( const OctetStr &lhs,const char *rhs);
- bool operator!=( const OctetStr &lhs,const char *rhs);
- bool operator<( const OctetStr &lhs,const char *rhs);
- bool operator<=( const OctetStr &lhs,char *rhs);
- bool operator>( const OctetStr &lhs,const char *rhs);
- bool operator>=( const OctetStr &lhs,const char *rhs);
- OctetStr& operator+=( const SmiBYTE *a);
- OctetStr& operator+=( const char c);
- OctetStr& operator+=( const OctetStr& octetstr);
- SmiBYTE& operator[]( int position);
- int nCompare( const long n, const OctetStr &o) const;
- size_t length() const ;
- int valid() const;
- SmiBYTE *data() const;
- char *to_string();
- char *to_string_hex();
- SnmpSyntax *clone() const;
- SnmpSyntax& operator=( SnmpSyntax &val);
- */
-
-static void TestOctet()
-{
- const char *str = "A test of octet strings...!@@#$%^&*()_+|~{}:,./<>?";
- OctetStr o1;
- ACE_ASSERT(o1.valid() == 1);
- ACE_ASSERT(o1.length() == 0);
- ACE_ASSERT(o1.data() != (unsigned char *)0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"\") [%s]\n",
- o1.to_string()));
- o1.set_data((SmiBYTE *)str);
- ACE_ASSERT(!ACE_OS::strcmp(str, (char *)o1.data()));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o1(\"str\") [%s]\n",
- o1.to_string()));
-
- OctetStr o2(str);
- ACE_ASSERT(o2.valid() == 1);
- ACE_ASSERT(o2.data() != (unsigned char *)0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o2(\"str\") [%s]\n",
- o2.to_string()));
-
- OctetStr o3(str, 4); // test setting less than full string length
- ACE_ASSERT(o3.valid() == 1);
- ACE_ASSERT(o3.length() == 4);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o3(\"A te\") [%s]\n",
- o3.to_string()));
-
- OctetStr o4(o3); // test setting less than full string length
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o4(\"A te\") [%s]\n",
- o4.to_string()));
- ACE_ASSERT(o4.valid() == 1);
- ACE_ASSERT(o4.length() == 4);
-
- OctetStr o5;
- o5 = str;
- ACE_ASSERT(o5.valid() == 1);
- ACE_ASSERT(o5.length() == ACE_OS::strlen(str));
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o5(\"str\") [%s]\n",
- o5.to_string()));
-
- OctetStr o6;
- o6 = o5;
- ACE_ASSERT(o6.valid() == 1);
- ACE_ASSERT(o5.length() == o6.length());
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n",
- o6.to_string()));
-
- o6 += o3;
- o6 = "";
- o6 += str;
- o6 += '#';
- ACE_ASSERT(o6[0] == (SmiBYTE) 'A');
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Octet:o6(\"str\") [%s]\n",
- o6.to_string()));
-
- ACE_ASSERT(!(o3 < o3));
- ACE_ASSERT(!(o3 > o3));
- ACE_ASSERT(o3 >= o3);
- ACE_ASSERT(o3 <= o3);
- ACE_ASSERT(o3 == o3);
- ACE_ASSERT(!(o3 != o3));
-
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Octet_Test"));
-
- TestOctet();
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Oid_Test.cpp b/ASNMP/tests/Oid_Test.cpp
deleted file mode 100644
index 7add52bd790..00000000000
--- a/ASNMP/tests/Oid_Test.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// Oid_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Oid class. An Object
-// representing an ASN.1 Integer64 SMI OID SYNTAX.
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/oid.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Oid_Test, "$Id$")
-
-/*
- Oid( const char * dotted_oid_string = "", size_t size = -1);
- Oid ( const Oid &oid);
- Oid(const unsigned long *raw_oid, size_t oid_len);
- ~Oid();
-
- SmiUINT32 get_syntax();
- Oid& operator=( const Oid &oid);
- bool operator==( const Oid &lhs,const Oid &rhs);
- bool operator!=( const Oid &lhs,const Oid &rhs);
- bool operator<( const Oid &lhs,const Oid &rhs);
- bool operator<=( const Oid &lhs,const Oid &rhs);
- bool operator>( const Oid &lhs,const Oid &rhs);
- bool operator>=( const Oid &lhs,const Oid &rhs);
- Oid& operator+=( const char *a);
- Oid& operator+=( const unsigned long i);
- Oid& operator+=( const Oid &o);
- unsigned long & operator[]( size_t position);
- SmiLPOID oidval();
- void set_data( const char *dotted_oid_string);
- void set_data( const unsigned long *raw_oid, const size_t oid_len);
- size_t length() const;
- void trim( const size_t how_many = 1);
- int suboid( const size_t start, const size_t end, Oid& new_oid);
- int left_comparison( const unsigned long n, const Oid &o) const;
- int right_comparison( const unsigned long n, const Oid &o) const;
- int valid() const;
- char *to_string();
- SnmpSyntax *clone() const;
- SnmpSyntax& operator=( SnmpSyntax &val);
- */
-
-static void OidTest()
-{
- Oid d1;
- ACE_ASSERT(d1.valid() == 0);
- ACE_ASSERT(d1.length() == 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d1(\"\") [%s]\n",
- d1.to_string()));
-
- Oid d2("1.2.3");
- ACE_ASSERT(d2.valid() == 1);
- ACE_ASSERT(d2.length() == 3);
- ACE_ASSERT(d2[0] == (unsigned long) 1);
- ACE_ASSERT(d2[1] == (unsigned long) 2);
- ACE_ASSERT(d2[2] == (unsigned long) 3);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d2(\"1.2.3\") [%s]\n",
- d2.to_string()));
-
- Oid d3(d2);
- ACE_ASSERT(d3.valid() == 1);
- ACE_ASSERT(d3.length() == 3);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d3(\"d2\") [%s]\n",
- d3.to_string()));
-
- unsigned long t[3] = {2,3,4};
- Oid d4((unsigned long *)&t, sizeof(t)/sizeof(long));
- ACE_ASSERT(d4.valid() == 1);
- ACE_ASSERT(d4.length() == 3);
- ACE_ASSERT(d4[0] == (unsigned long) 2);
- ACE_ASSERT(d4[1] == (unsigned long) 3);
- ACE_ASSERT(d4[2] == (unsigned long) 4);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d4(\"long(2.3.4)\") [%s]\n",
- d4.to_string()));
-
- // suboid
- Oid d5;
- ACE_ASSERT(d4.suboid(d5, 1,1) == 0); // 2,3,4, 1,1 == 3
- ACE_ASSERT(d5.length() == 1);
- ACE_ASSERT(d5.valid() == 1);
- ACE_ASSERT(d5[0] == 3);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d6::suboid(d5,1,1) [%s]\n",
- d5.to_string()));
-
- // trim
- Oid d7(d4);
- ACE_ASSERT(d7.valid() == 1);
- d7.trim();
- ACE_ASSERT(d7.length() == d4.length() -1);
-
- // compare methods
- ACE_ASSERT(d7.left_comparison( d7.length(), d7) == 0);
- ACE_ASSERT(d4.right_comparison( d4.length(), d4) == 0);
-
- // assignment
- d1 = d4;
- ACE_ASSERT(d1.valid() == 1);
- ACE_ASSERT(d1 == d4);
- d2 = "5.6.7";
- ACE_ASSERT(d2.valid() == 1);
- ACE_ASSERT(d2[2] == (unsigned long) 7);
- d1 = "8.9.10";
- ACE_ASSERT(d1.valid() == 1);
-
- // concat
- unsigned long ll = ULONG_MAX;
- d1 = "";
- d1 += (unsigned long)0;
- d1 += ll;
- d1 += ll;
- d1 += "0";
- ACE_ASSERT(d1.valid() == 1);
- ACE_ASSERT(d1.length() == 4);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:d1(0,max,max,0) [%s]\n",
- d1.to_string()));
- ACE_ASSERT(d1[0] == (unsigned long)0);
- ACE_ASSERT(d1[1] == ll);
- ACE_ASSERT(d1[2] == ll);
- ACE_ASSERT(d1[3] == (unsigned long)0);
-
- d2 += d1;
- ACE_ASSERT(d2.valid() == 1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) Oid:(5.6.7.8.9.10) [%s]\n",
- d2.to_string()));
-
- // test out max Oid string...
-
- // relational operators oid,oid
- ACE_ASSERT(d2 == d2);
- ACE_ASSERT(!(d2 != d2));
- ACE_ASSERT(!(d2 < d2));
- ACE_ASSERT(!(d2 > d2));
- ACE_ASSERT(d2 >= d2);
- ACE_ASSERT(d2 <= d2);
-
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Oid_Test"));
- OidTest();
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Target_Test.cpp b/ASNMP/tests/Target_Test.cpp
deleted file mode 100644
index 28302e11cfd..00000000000
--- a/ASNMP/tests/Target_Test.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// tests
-//
-// = FILENAME
-// Target_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Target class.
-// Not sure if this object is really required or not in the new framework
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/octet.h"
-#include "asnmp/target.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Target_Test, "$Id$")
-
-/*
- Percieved Problems with this CTarget aka UdpTarget Interface:
-
- 1) can't set snmp version during constructor (default value?)
- 2) doesn't use ANSI C++ String class (still uses char *)
- 3) Makes it easy to mix up read and write comm strs (could be diff types)
- 3) so many get/set's, leads one to rethink the design/use of UdpTarget
- 4) Use of resolve_to_C smells like a HACK...
- 5) No valid() member function returns 1 even if no address given..
- 6) No to_string()?! (Fixed)
- 7) can't access retry, timeout parameters...
- 8) can't assign or equate two UdpTargets
-
- UdpTarget( void);
- UdpTarget( const Address &address);
- UdpTarget( const UdpTarget &target);
- UdpTarget( const Address &address, // address
- const char *read_community_name, // read community name
- const char *write_community_name); // write community name
- UdpTarget( const Address &address, // address
- const OctetStr &read_community_name, // read community
- const OctetStr &write_community_name); // write community
- ~UdpTarget();
-
- SnmpTarget *clone() const;
- void get_readcommunity( OctetStr& read_community_oct);
- void set_readcommunity( const OctetStr& read_community);
- void get_writecommunity( OctetStr &write_community_oct);
- void set_writecommunity( const OctetStr& write_community);
- void get_address( UdpAddress & address);
- int set_address( Address &address);
- snmp_version get_version();
- void set_version( const snmp_version v);
-
- UdpTarget& operator=( const UdpTarget& target);
- friend bool operator==( const UdpTarget &lhs, const UdpTarget &rhs);
-
- */
-
-static void TestSnmpTarget()
-{
- OctetStr rd("rd_comm"), wr("wr_comm");
- ACE_ASSERT(rd.valid() == 1);
- ACE_ASSERT(wr.valid() == 1);
-
- // constructor and get tests
- UdpAddress ga;
- ACE_ASSERT(ga.valid() == 0);
-
- UdpTarget c1;
- ACE_ASSERT(c1.valid() == 0);
- OctetStr a, b("public"), c("private");
- c1.get_read_community(a);
- ACE_ASSERT(a == b);
- c1.get_write_community(a);
- ACE_ASSERT(a == c);
- c1.get_address (ga);
- ACE_ASSERT(c1.get_version() == version1);
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c1(\"\") [%s]\n",
- c1.to_string()));
-
- IpAddress ip("127.0.0.1");
- UdpTarget c2(ip);
- ACE_ASSERT(c2.valid() == 1);
- c2.get_address (ga);
- ACE_ASSERT(ga.valid() == 1);
- ACE_ASSERT(c2.get_version() == version1);
- ACE_ASSERT(ga.valid() == 1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c2(\"\") [%s]\n",
- c2.to_string()));
-
- UdpTarget *c5 = new UdpTarget(c2);
- ACE_ASSERT(c5 != 0);
- ACE_ASSERT(c5->valid() == 1);
- c5->get_address (ga);
- ACE_ASSERT(ga.valid() == 1);
- ACE_ASSERT(c5->get_version() == version1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) UdpTarget:c5(\"\") [%s]\n",
- c5->to_string()));
- delete c5;
-
-// these are not supported yet
-// ACE_ASSERT(c5 == c5);
-// c5 = c2;
-// ACE_ASSERT(c5 == c2);
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Target_Test"));
- TestSnmpTarget();
-
- ACE_END_TEST;
- return 0;
-}
diff --git a/ASNMP/tests/Varbind_Test.cpp b/ASNMP/tests/Varbind_Test.cpp
deleted file mode 100644
index e9c9ecc923b..00000000000
--- a/ASNMP/tests/Varbind_Test.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// Varbind_Test.cpp
-//
-// = DESCRIPTION
-// Test all the member functions of the Varbind class.
-// A varbind is a list of { oids and associated values }
-//
-// = AUTHOR
-// Michael R. MacFaden <mrm@cisco.com>
-//
-// ============================================================================
-
-/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-Copyright 1997 Cisco Systems, Inc.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose and without fee is hereby granted, provided that this
-copyright and permission notice appear on all copies of the software and
-supporting documentation, the name of Cisco Systems, Inc. not be used
-in advertising or publicity pertaining to distribution of the
-program without specific prior permission, and notice be given
-in supporting documentation that modification, copying and distribution is by
-permission of Cisco Systems, Inc.
-
-Cisco Systems, Inc. makes no representations about the suitability of this
-software for any purpose. THIS SOFTWARE IS PROVIDED ``AS IS''
-AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
-LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGMENT AND
-FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL CISCO SYSTEMS, INC. BE
-LIABLE FOR ANY DAMAGES ARISING OUT OF THIS LICENSE OR YOUR USE OF THE
-SOFTWARE INCLUDING WITHOUT LIMITATION, DIRECT, INDIRECT OR CONSEQUENTIAL
-DAMAGES.
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
-
-#include "ace/OS_main.h"
-#include "asnmp/oid.h"
-#include "asnmp/vb.h"
-#include "test_config.h"
-
-ACE_RCSID(tests, Varbind_Test, "$Id$")
-/*
- Vb( void);
- Vb( const Oid &oid);
- Vb( const Vb &vb);
- Vb( const Oid& vb, const SnmpSyntax &val, const SmiUINT32=SNMP_CLASS_SUCCESS);
- ~Vb();
- int valid() const;
- Vb& operator=( const Vb &vb);
- void set_oid( const Oid& oid);
- void get_oid( Oid &oid) const;
- void set_null();
- void set_value( const TimeTicks& ticks);
- void set_value( const Oid& oid);
- void set_value( const Counter32& ctr);
- void set_value( const Counter64& ctr);
- void set_value( const Gauge32& ctr);
- void set_value( const SnmpUInt32& ctr);
- void set_value( const SnmpInt32& ctr);
- void set_value( const OctetStr& oct_str);
- int get_value( TimeTicks& ticks);
- int get_value( Oid& oid);
- int get_value( Counter32& ctr);
- int get_value( Counter64& ctr);
- int get_value( Gauge32& ctr);
- int get_value( SnmpUInt32& ctr);
- int get_value( SnmpInt32& ctr);
- int get_value( OctetStr& oct_str);
- int get_value( SnmpSyntax &val);
- void set_value( const SnmpSyntax &val);
- int get_value( const SnmpSyntax &val);
- SmiUINT32 get_syntax();
- friend void set_exception_status( Vb *vb, const SmiUINT32 status);
- char *to_string();
- char *to_string_value();
- char *to_string_oid();
- */
-
-static void VbTest()
-{
-#if !defined (ACE_WIN32)
-
- Vb v1;
- ACE_ASSERT(v1.valid() == 0);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) VarBinad:v1(\"/\") [%s]\n",
- v1.to_string()));
-
- // purpose of this routine??
- set_exception_status( &v1, 10);
-
- Vb v2(v1);
- ACE_ASSERT(v2.valid() == 0);
- Oid o1("1.2.3"), o2;
- v2.set_oid(o1);
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) VarBinad:v2(\"1.2.3/\") [%s]\n",
- v2.to_string()));
-
- v2.get_oid(o2);
- ACE_ASSERT(o2 == o1);
- ACE_ASSERT(v2.valid() == 0);
- v2.set_null();
- ACE_ASSERT(v2.valid() == 0);
- v2.get_oid(o2);
-
- Vb v3;
- TimeTicks t(0), t1;
- v3.set_oid(o1);
- v3.set_value(t);
- ACE_ASSERT(v3.valid() == 1);
- v3.get_value(t1);
- ACE_ASSERT(t == t1);
-
- Vb v4;
- v4.set_oid(o1);
- v4.set_value(o1);
- ACE_ASSERT(v4.valid() == 1);
- v4.get_value(o2);
- ACE_ASSERT(o1 == o2);
-
- Vb v5;
- Counter32 c1(12), c2;
- v5.set_oid(o1);
- v5.set_value(c1);
- ACE_ASSERT(v5.valid() == 1);
- v5.get_value(c2);
- ACE_ASSERT(c1 == c2);
-
- Vb v6;
- Counter64 c3(12345678901234ULL), c4;
- v6.set_oid(o1);
- v6.set_value(c3);
- ACE_ASSERT(v6.valid() == 1);
- v6.get_value(c4);
- ACE_ASSERT(c3 == c4);
-
- Vb v7;
- Gauge32 g1(0123456), g2;
- v7.set_oid(o1);
- v7.set_value(g1);
- ACE_ASSERT(v7.valid() == 1);
- v7.get_value(g2);
- ACE_ASSERT(g1 == g2);
-
- Vb v8;
- SnmpInt32 i1(0123456), i2;
- v8.set_oid(o1);
- v8.set_value(i1);
- ACE_ASSERT(v8.valid() == 1);
- v8.get_value(i2);
- ACE_ASSERT(i1 == i2);
-
- Vb v9;
- SnmpUInt32 u1(0123456), u2;
- v9.set_oid(o1);
- v9.set_value(u1);
- ACE_ASSERT(v9.valid() == 1);
- v9.get_value(u2);
- ACE_ASSERT(u1 == u2);
-
- Vb v10;
- OctetStr s1(" abcdefghighlmnopqrstuvwxyz!@#$%^&*()"), s2;
- v10.set_oid(o1);
- v10.set_value(s1);
- ACE_ASSERT(v10.valid() == 1);
- v10.get_value(s2);
- ACE_ASSERT(s1 == s2);
- ACE_ASSERT(s1.length() == s2.length());
-
- // test assignment over all datatypes
- v10 = v5;
- ACE_ASSERT(v10 == v5);
-
-
- Vb v11(o1, s1, SNMP_CLASS_SUCCESS);
- ACE_ASSERT(v11.valid() == 1);
- v11.get_oid(o2);
- ACE_ASSERT(o1 == o2);
- v11.get_value(s2);
- ACE_ASSERT(s1 == s2);
-#endif /*if ACE_WIN32*/
-}
-
-int
-ACE_TMAIN (int, ACE_TCHAR *[])
-{
- ACE_START_TEST (ACE_TEXT ("Varbind_Test"));
- VbTest();
- ACE_END_TEST;
- return 0;
-}
-
diff --git a/ASNMP/tests/run_tests.bat b/ASNMP/tests/run_tests.bat
deleted file mode 100644
index 985f88b51db..00000000000
--- a/ASNMP/tests/run_tests.bat
+++ /dev/null
@@ -1,44 +0,0 @@
-@echo off
-rem To use this either give it no arguments to run all the tests or
-rem pass it the test name (without the extention) to run only one
-rem test
-
-if not "%1" == "" goto runtest
-
-call run_tests
-
-call run_tests Address_Test
-call run_tests Counter64_Test
-call run_tests Counter_Test
-call run_tests Gauge_Test
-call run_tests Integer_Test
-call run_tests Octet_Test
-call run_tests Oid_Test
-call run_tests Target_Test
-call run_tests Varbind_Test
-
-goto done
-
-:runtest
-
-echo Running %1
-%1.exe
-if errorlevel 0 goto fine
-echo.
-echo %1 has FAILED!!!
-echo.
-type %temp%\log\%1.log | find /I "assertion failed"
-type %temp%\log\%1.log | find /I "not supported"
-type %temp%\log\%1.log | find /I "no such file or directory"
-type %temp%\log\%1.log | find /I "invalid argument"
-type %temp%\log\%1.log | find /I "timeout"
-type %temp%\log\%1.log | find /I "bad file number"
-echo.
-
-goto done
-:fine
-
-rem We should check the log files here to make sure the test ended correctly
-rem type %temp%\log\%1.log | find "Ending"
-
-:done
diff --git a/ASNMP/tests/run_tests.sh b/ASNMP/tests/run_tests.sh
deleted file mode 100755
index c8d911c184c..00000000000
--- a/ASNMP/tests/run_tests.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-# This is the UNIX version of the one-button ACE tests.
-# Contributed by Michael Rueger <m_rueger@SYSCOMP.DE>
-# mrm@cisco.com - Change to for loop script could be more generic if we put
-# this in the bin dir and fed it a file to read from
-
-IFS="|"
-tmp=/tmp
-
-# these patterns should not be included in log file
-ERROR_MSGS="assertion failed|not supported|No such file or directory|Invalid argument|timeout|Bad file number"
-
-# these patterns must be included in log file
-SUCCESS_MSGS="starting|Ending"
-
-run()
-{
- echo running $1
- /bin/rm -f core
-
- ./$1
- status=$?
-
- if [ $status -ne 0 ]; then
- echo \"$1\" FAILED with exit status $status!!!!
- fi
-
- if [ -f core ]; then
- echo \"$1\" dumped core!!!!
- fi
-
- for i in $SUCCESS_MSGS; do
- grep $i log/$1.log >/dev/null
- if [ $? -eq 1 ]; then
- echo Error in log file no line with $i
- fi
- done
-
- for i in $ERROR_MSGS; do
- grep $i log/$1.log
- done
-}
-
-echo "Starting tests..."
-FILES=`ls *_Test 2>/dev/null`
-
-if [ -z $FILES ]; then
- echo "ERROR: no test programs generated matching pattern *_Test."
- echo "ERROR: Try compiling the test programs first."
- exit 1
-fi
-
-for i in *_Test
-do
- run $i
-done
-
-echo "Tests complete..."
-
-
-# EOF
diff --git a/ASNMP/tests/test_config.h b/ASNMP/tests/test_config.h
deleted file mode 100644
index 887fa5cec8a..00000000000
--- a/ASNMP/tests/test_config.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-// = FILENAME
-// test_config.h
-//
-// = AUTHOR
-// Prashant Jain <pjain@cs.wustl.edu>, Tim Harrison
-// <harrison@cs.wustl.edu>, and David Levine <levine@cs.wustl.edu>
-//
-// ============================================================================
-
-#ifndef ACE_TEST_CONFIG_H
-#define ACE_TEST_CONFIG_H
-
-#include "ace/ACE.h"
-#include "ace/Log_Msg.h"
-#include "ace/OS_main.h"
-#include "ace/OS_NS_stdio.h"
-#include "ace/OS_NS_time.h"
-#include "ace/OS_NS_sys_stat.h"
-#include "ace/OS_NS_stdlib.h"
-
-// FUZZ: disable check_for_streams_include
-#include "ace/streams.h"
-
-#if !defined (ACE_HAS_TEMPLATE_SPECIALIZATION)
-class KEY
-// ============================================================================
-// = TITLE
-// Define a key for use with the Map_Manager_Test.
-//
-// = DESCRIPTION
-// This class is put into the test_config.h header file to work
-// around AIX C++ compiler "features" related to template
-// instantiation... It is only used by Map_Manager_Test.cpp
-// ============================================================================
-{
-public:
- KEY (size_t v = 0): value_ (v)
- { }
-
- size_t hash (void) const { return this->value_; }
- operator size_t () const { return this->value_; }
-
-private:
- size_t value_;
-};
-#else
-typedef size_t KEY;
-#endif /* ACE_HAS_TEMPLATE_SPECIALIZATION */
-
-#if defined (ACE_WIN32)
-
-#define ACE_DEFAULT_TEST_FILE ACE_TEXT ("C:\\temp\\ace_test_file")
-#define ACE_TEMP_FILE_NAME ACE_TEXT ("C:\\temp\\ace_temp_file")
-#define ACE_LOG_DIRECTORY ACE_TEXT ("C:\\temp\\log\\")
-#define MAKE_PIPE_NAME(X) ACE_TEXT ("\\\\.\\pipe\\"#X)
-
-#else
-
-#define ACE_DEFAULT_TEST_FILE ACE_TEXT ("/tmp/ace_test_file")
-#define ACE_TEMP_FILE_NAME ACE_TEXT ("/tmp/ace_temp_file")
-#define ACE_LOG_DIRECTORY ACE_TEXT ("log/")
-#define MAKE_PIPE_NAME(X) ACE_TEXT (X)
-
-#endif /* ACE_WIN32 */
-
-#define ACE_START_TEST(NAME) \
- const ACE_TCHAR *program = NAME; \
- ACE_LOG_MSG->open (program, ACE_Log_Msg::OSTREAM); \
- if (ace_file_stream.set_output (program) != 0) \
- ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("set_output failed")), -1); \
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) starting %s test at %T\n"), program));
-
-#define ACE_END_TEST \
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) Ending %s test at %T\n"), program)); \
- ace_file_stream.close ();
-
-#define ACE_NEW_THREAD \
-do {\
- ACE_LOG_MSG->msg_ostream (ace_file_stream.output_file ()); \
- ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER ); \
- ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); \
-} while (0)
-
-#define ACE_APPEND_LOG(NAME) \
- const ACE_TCHAR *program = NAME; \
- ACE_LOG_MSG->open (program, ACE_Log_Msg::OSTREAM); \
- if (ace_file_stream.set_output (program, 1) != 0) \
- ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("set_output failed")), -1); \
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) Starting %s test at %T\n"), program));
-
-#define ACE_END_LOG \
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) Ending %s test at %T\n\n"), program)); \
- ace_file_stream.close ();
-
-#define ACE_INIT_LOG(NAME) \
- char temp[BUFSIZ]; \
- ACE_OS::sprintf (temp, "%s%s%s", \
- ACE_TEXT_ALWAYS_CHAR (ACE_LOG_DIRECTORY), \
- ACE_TEXT_ALWAYS_CHAR (ACE::basename (NAME, ACE_DIRECTORY_SEPARATOR_CHAR)), \
- ".log"); \
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Deleting old log file %C (if any)\n\n"), temp)); \
- ACE_OS::unlink (temp);
-
-
-const int ACE_NS_MAX_ENTRIES = 1000;
-const int ACE_MAX_TIMERS = 4;
-const int ACE_MAX_THREADS = 4;
-const int ACE_MAX_DELAY = 10;
-const int ACE_MAX_INTERVAL = 0;
-const int ACE_MAX_ITERATIONS = 10;
-const int ACE_MAX_PROCESSES = 10;
-
-char ACE_ALPHABET[] = "abcdefghijklmnopqrstuvwxyz";
-
-class ACE_Test_Output
-{
-public:
- ACE_Test_Output (void);
- ~ACE_Test_Output (void);
- int set_output (const ACE_TCHAR *filename, int append = 0);
- ofstream *output_file (void);
- void close (void);
-
-private:
- ofstream output_file_;
-};
-
-static ACE_Test_Output ace_file_stream;
-
-ACE_Test_Output::ACE_Test_Output (void)
-{
-}
-
-ACE_Test_Output::~ACE_Test_Output (void)
-{
-}
-
-int
-ACE_Test_Output::set_output (const ACE_TCHAR *filename, int append)
-{
- char temp[BUFSIZ];
- // Ignore the error value since the directory may already exist.
- ACE_OS::mkdir (ACE_LOG_DIRECTORY);
- ACE_OS::sprintf (temp, "%s%s%s",
- ACE_TEXT_ALWAYS_CHAR (ACE_LOG_DIRECTORY),
- ACE_TEXT_ALWAYS_CHAR (ACE::basename (filename, ACE_DIRECTORY_SEPARATOR_CHAR)),
- ".log");
-
- this->output_file_.open (temp, ios::out | (append ? ios::app : ios::trunc));
- if (this->output_file_.bad ())
- return -1;
-
- ACE_LOG_MSG->msg_ostream (ace_file_stream.output_file ());
- ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR | ACE_Log_Msg::LOGGER );
- ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);
-
- return 0;
-}
-
-ofstream *
-ACE_Test_Output::output_file (void)
-{
- return &this->output_file_;
-}
-
-void
-ACE_Test_Output::close (void)
-{
- this->output_file_.flush ();
- this->output_file_.close ();
-}
-
-void
-randomize (int array[], size_t size)
-{
- size_t i;
-
- for (i = 0; i < size; i++)
- array [i] = static_cast<int> (i);
-
- ACE_OS::srand (ACE_OS::time (0L));
-
- // Generate an array of random numbers from 0 .. size - 1.
-
- for (i = 0; i < size; i++)
- {
- int index = ACE_OS::rand() % static_cast<int> (size);
- --size;
- int temp = array [index];
- array [index] = array [size];
- array [size] = temp;
- }
-}
-
-#endif /* ACE_TEST_CONFIG_H */
diff --git a/ASNMP/tests/tests.mpc b/ASNMP/tests/tests.mpc
deleted file mode 100644
index df62404642a..00000000000
--- a/ASNMP/tests/tests.mpc
+++ /dev/null
@@ -1,91 +0,0 @@
-// $Id$
-
-project (asnmp_tests_Oid_Test) : aceexe {
- exename = Oid_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Oid_Test.cpp
- }
-}
-
-project (asnmp_tests_Counter_Test) : aceexe {
- exename = Counter_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Counter_Test.cpp
- }
-}
-
-project (asnmp_tests_Counter64_Test) : aceexe {
- exename = Counter64_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Counter64_Test.cpp
- }
-}
-
-project (asnmp_tests_Integer_Test) : aceexe {
- exename = Integer_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Integer_Test.cpp
- }
-}
-
-project (asnmp_tests_Octet_Test) : aceexe {
- exename = Octet_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Octet_Test.cpp
- }
-}
-
-project (asnmp_tests_Gauge_Test) : aceexe {
- exename = Gauge_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Gauge_Test.cpp
- }
-}
-
-project (asnmp_tests_Address_Test) : aceexe {
- exename = Address_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Address_Test.cpp
- }
-}
-
-project (asnmp_tests_Target_Test) : aceexe {
- exename = Target_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Target_Test.cpp
- }
-}
-
-project (asnmp_tests_Varbind_Test) : aceexe {
- exename = Varbind_Test
- after += asnmp_lib
- libs += asnmp
- includes += $(ACE_ROOT)/ASNMP
- source_files {
- Varbind_Test.cpp
- }
-}