psnmp.cxx
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:4k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * psnmp.cxx
  3.  *
  4.  * SNMP base and support classes.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: psnmp.cxx,v $
  30.  * Revision 1.8  1998/11/30 04:52:06  robertj
  31.  * New directory structure
  32.  *
  33.  * Revision 1.7  1998/10/13 14:06:32  robertj
  34.  * Complete rewrite of memory leak detection code.
  35.  *
  36.  * Revision 1.6  1998/09/23 06:22:33  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.5  1998/01/26 02:50:17  robertj
  40.  * GNU Support
  41.  *
  42.  * Revision 1.4  1997/07/20 08:50:04  craigs
  43.  * Changed var binding list to use ASN NULL rather than empty string
  44.  *
  45.  * Revision 1.3  1997/07/14 11:47:17  robertj
  46.  * Added "const" to numerous variables.
  47.  *
  48.  * Revision 1.2  1996/11/04 03:59:19  robertj
  49.  * Added selectable read buffer size.
  50.  *
  51.  * Revision 1.1  1996/09/14 13:02:18  robertj
  52.  * Initial revision
  53.  *
  54.  * Revision 1.9  1996/05/29 10:44:51  craigs
  55.  * Latest version wil traps and discovery
  56.  *
  57.  * Revision 1.8  1996/05/09 13:23:49  craigs
  58.  * Added trap functions
  59.  *
  60.  * Revision 1.7  1996/04/23 12:12:46  craigs
  61.  * Changed to use GetErrorText function
  62.  *
  63.  * Revision 1.6  1996/04/16 13:20:43  craigs
  64.  * Final version prior to beta1 release
  65.  *
  66.  * Revision 1.5  1996/04/15 09:05:30  craigs
  67.  * Latest version prior to integration with Robert's changes
  68.  *
  69.  * Revision 1.4  1996/04/06 11:38:35  craigs
  70.  * Lots of changes - working version prior to discover changes
  71.  *
  72.  * Revision 1.3  1996/04/01 12:50:44  craigs
  73.  * CHanged for clean compile under NT
  74.  *
  75.  * Revision 1.2  1996/04/01 12:34:06  craigs
  76.  * Added RCS header
  77.  *
  78.  *
  79.  */
  80. #ifdef __GNUC__
  81. #pragma implementation "psnmp.h"
  82. #endif
  83. #include <ptlib.h>
  84. #include <ptclib/psnmp.h>
  85. #define new PNEW
  86. static char const * const SnmpErrorCodeTable[] = 
  87. {
  88.   "no error",
  89.   "too big",
  90.   "no such name",
  91.   "bad value",
  92.   "read only",
  93.   "gen err",
  94.   "no response",
  95.   "malformed response",
  96.   "send failed",
  97.   "rx buff too small",
  98.   "tx data too big"
  99. };
  100. static char const * const TrapCodeToText[PSNMP::NumTrapTypes] = {
  101.   "Cold Start",
  102.   "Warm Start",
  103.   "Link Down",
  104.   "Link Up",
  105.   "Auth Fail",
  106.   "EGP Loss",
  107.   "Enterprise"
  108. };
  109. ///////////////////////////////////////////////////////////////
  110. //
  111. //  PSNMPVarBindingList
  112. //
  113. void PSNMPVarBindingList::Append(const PString & objectID)
  114. {
  115.   objectIds.AppendString(objectID);
  116.   values.Append(new PASNNull());
  117. }
  118. void PSNMPVarBindingList::Append(const PString & objectID, PASNObject * obj)
  119. {
  120.   objectIds.AppendString(objectID);
  121.   values.Append(obj);
  122. }
  123. void PSNMPVarBindingList::AppendString(const PString & objectID, const PString & str)
  124. {
  125.   Append(objectID, new PASNString(str));
  126. }
  127. void PSNMPVarBindingList::RemoveAll()
  128. {
  129.   objectIds.RemoveAll();
  130.   values.RemoveAll();
  131. }
  132. PINDEX PSNMPVarBindingList::GetSize() const
  133. {
  134.   return objectIds.GetSize();
  135. }
  136. PASNObject & PSNMPVarBindingList::operator[](PINDEX idx) const
  137. {
  138.   return values[idx];
  139. }
  140. PString PSNMPVarBindingList::GetObjectID(PINDEX idx) const
  141.   return objectIds[idx];
  142. }
  143. void PSNMPVarBindingList::PrintOn(ostream & strm) const
  144. {
  145.   for (PINDEX i = 0; i < GetSize(); i++) 
  146.     strm << objectIds[i] 
  147.          << " = "
  148.          << values[i];
  149. }
  150. PString PSNMP::GetTrapTypeText(PINDEX code)
  151. {
  152.   PString str;
  153.   if (code >= NumTrapTypes)
  154.     return "Unknown";
  155.   else
  156.     return TrapCodeToText[code];
  157. }
  158. PString PSNMP::GetErrorText(ErrorType err) 
  159. {
  160.   if (err >= NumErrors)
  161.     return "unknown error";
  162.   else
  163.     return SnmpErrorCodeTable[err];
  164. }
  165. // End Of File ///////////////////////////////////////////////////////////////