summaryrefslogtreecommitdiff
path: root/ACE/ASNMP/asnmp/snmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ASNMP/asnmp/snmp.h')
-rw-r--r--ACE/ASNMP/asnmp/snmp.h137
1 files changed, 137 insertions, 0 deletions
diff --git a/ACE/ASNMP/asnmp/snmp.h b/ACE/ASNMP/asnmp/snmp.h
new file mode 100644
index 00000000000..5bae232baa0
--- /dev/null
+++ b/ACE/ASNMP/asnmp/snmp.h
@@ -0,0 +1,137 @@
+/* -*-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_