target.h
上传用户:czjinwang
上传日期:2007-01-12
资源大小:2484k
文件大小:7k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. /*===================================================================
  2.   Copyright (c) 1999
  3.   Hewlett-Packard Company
  4.   ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  5.   Permission to use, copy, modify, distribute and/or sell this software 
  6.   and/or its documentation is hereby granted without fee. User agrees 
  7.   to display the above copyright notice and this license notice in all 
  8.   copies of the software and any documentation of the software. User 
  9.   agrees to assume all liability for the use of the software; Hewlett-Packard 
  10.   makes no representations about the suitability of this software for any 
  11.   purpose. It is provided "AS-IS" without warranty of any kind,either express 
  12.   or implied. User hereby grants a royalty-free license to any and all 
  13.   derivatives based upon this software code base. 
  14.   SNMP++  T A R G E T . H   
  15.       
  16.   TARGET CLASS DEFINITION
  17.        
  18.   VERSION:
  19.   2.8
  20.   RCS INFO:
  21.   $Header: target.h,v 1.19 96/09/11 14:01:37 hmgr Exp $
  22.        
  23.   DESIGN:
  24.   Peter E Mellquist
  25.                 
  26.   AUTHOR:      
  27.   Peter E Mellquist
  28.               
  29.   LANGUAGE:
  30.   ANSI C++ 
  31.       
  32.   OPERATING SYSTEMS:
  33.   DOS/WINDOWS 3.1
  34.   BSD UNIX
  35.       
  36.   DESCRIPTION:
  37.   Target class defines target SNMP agents. 
  38.       
  39. =====================================================================*/ 
  40. #ifndef _TARGET
  41. #define _TARGET
  42. //----[ includes ]----------------------------------------------------- 
  43. #include "address.h" 
  44. #include "oid.h"
  45. #include "octet.h"
  46. #include "collect.h"  
  47. // external C libraries
  48. extern "C"
  49. {   
  50. #include <string.h>
  51. }
  52. //----[ enumerated types for SNMP versions ]---------------------------
  53. enum snmp_version {
  54.    version1,          // 0
  55.    version2c          // 1
  56.    };
  57.  
  58. //----[ Target class ]------------------------------------------------- 
  59. // Abstract class used to provide a virtual interface into Targets
  60. // 
  61. class DLLOPT SnmpTarget { 
  62.  public:
  63.     // allow destruction of derived classes
  64.     virtual ~SnmpTarget();
  65.     // return validity of target
  66.     int valid() const; 
  67.     // set the retry value       
  68.     void set_retry( const int r);
  69.        
  70.     // get the retry value
  71.     int get_retry();
  72.        
  73.     // set the timeout   
  74.     void set_timeout( const unsigned long t);
  75.        
  76.     // get the timeout
  77.     unsigned long get_timeout();
  78.     
  79.     // change the default timeout   
  80.     void set_default_timeout( const unsigned long t);
  81.                                  
  82.     // change the default retries                             
  83.     void set_default_retries( const int r);
  84.           
  85.     // virtual clone operation for creating a new SnmpTarget from an existing
  86.     // SnmpTarget.  The caller MUST use the delete operation on the return
  87.     // value when done.
  88.     virtual SnmpTarget *clone() const = 0;
  89.  
  90.     // resolve to entity
  91.     // common interface for targets
  92.     // pure virtual
  93.     virtual int resolve_to_C ( OctetStr &read_comm,        // read community
  94.                                OctetStr &write_comm,       // write community
  95.                                GenAddress &address,        // address object
  96.                                unsigned long &t,           // timeout
  97.                                int &r,                     // retry
  98.                                unsigned char &v)=0;        // version V1 or v2c 
  99.     // return the address object
  100.     virtual int get_address( GenAddress &address)=0;
  101.     virtual int set_address( Address &address)=0;
  102. virtual snmp_version get_version() = 0;
  103.                                 
  104.    protected:
  105.      int validity; 
  106.      unsigned long timeout; // xmit timeout in milli secs
  107.      int retries;           // number of retries 
  108.      
  109. };
  110.  
  111. //----[  CTarget class ]---------------------------------------------- 
  112. // For explicit definition of Community based targets
  113. //
  114. class DLLOPT CTarget: public SnmpTarget{ 
  115.   public: 
  116.     // constructor with no args
  117.     CTarget( void); 
  118.      
  119.     // constructor with all args 
  120.     // can be constructed with any address object
  121.     CTarget( const Address &address,              // address
  122.              const char *read_community_name,     // read community name
  123.              const char *write_community_name);   // write community name
  124.     // constructor with all args 
  125.     // can be constructed with any address object
  126.     CTarget( const Address &address,                 // address
  127.              const OctetStr &read_community_name,    // read community
  128.              const OctetStr &write_community_name);  // write community
  129.     // constructor with only address
  130.     // assumes default as public, public              
  131.     // can be constructed with any address object
  132.     CTarget( const Address &address);
  133.     
  134.     // constructor from existing CTarget
  135.     CTarget( const CTarget &target);
  136.     // destructor
  137.     ~CTarget();
  138.     // clone from existing CTarget
  139.     SnmpTarget *clone() const;
  140.     // get the read community name
  141.     char * get_readcommunity();   
  142.     // get the read community as an Octet Str object
  143.     void get_readcommunity( OctetStr& read_community_oct);
  144.     
  145.     // set the read community name
  146.     void set_readcommunity( const char * new_read_community); 
  147.     
  148.     // set the read community using an OctetStr
  149.     void set_readcommunity( const OctetStr& read_community);
  150.       
  151.     // get the write community
  152.     char * get_writecommunity();
  153.     
  154.     // get the write community as an OctetStr
  155.     void get_writecommunity( OctetStr &write_community_oct);
  156.     
  157.     // set the write community
  158.     void set_writecommunity( const char * new_write_community);
  159.     // set the write community using an OctetStr
  160.     void set_writecommunity( const OctetStr& write_community);
  161.     // get the address
  162.     int get_address( GenAddress & address);
  163.     
  164.     // set the address
  165.     int set_address( Address &address);
  166.     // overloaded assignment    
  167.     CTarget& operator=( const CTarget& target);
  168.     // compare two C targets
  169.     DLLOPT friend int operator==( const CTarget &lhs, const CTarget &rhs);
  170.     
  171.     // resolve to C entity
  172.     // common interface for C targets
  173.     virtual int resolve_to_C( OctetStr&  read_comm,       // get community
  174.                               OctetStr&  write_comm,      // set community
  175.                               GenAddress &address,        // address object
  176.                               unsigned long &t,           // timeout
  177.                               int &r,                     // retry
  178.                               unsigned char &v);          // version v1 or v2c
  179.     
  180.     // get the version
  181.     snmp_version get_version();
  182.     // set the version
  183.     void set_version( const snmp_version v);
  184.     
  185.                 
  186.   protected:
  187.      OctetStr read_community;        //  get community
  188.      OctetStr  write_community;      //  set community
  189.      GenAddress my_address;          // address object
  190.      snmp_version version;           // v1 or v2C
  191. };
  192. // create OidCollection type
  193. typedef SnmpCollection<CTarget> TargetCollection;
  194. #endif //_TARGET