⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmpserv.cxx

📁 pwlib源码库
💻 CXX
字号:
/* * snmpserv.cxx * * SNMP Server (agent) class * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: snmpserv.cxx,v $ * Revision 1.4  2002/11/06 22:47:25  robertj * Fixed header comment (copyright etc) * * Revision 1.3  1998/11/30 04:52:09  robertj * New directory structure * * Revision 1.2  1998/09/23 06:22:42  robertj * Added open source copyright license. * * Revision 1.1  1996/09/14 13:02:18  robertj * Initial revision * */#include <ptlib.h>#include <ptclib/psnmp.h>BOOL PSNMPServer::SendGetResponse (PSNMPVarBindingList &){  PAssertAlways("SendGetResponse not yet implemented");  return GenErr;}void PSNMPServer::OnGetRequest (PSNMPVarBindingList &){}void PSNMPServer::OnGetNextRequest (PSNMPVarBindingList &){}void PSNMPServer::OnSetRequest (PSNMPVarBindingList &){}BOOL PSNMP::DecodeTrap(const PBYTEArray & readBuffer,                                       PINDEX & version,                                      PString & community,                                      PString & enterprise,                           PIPSocket::Address & address,                                       PINDEX & genericTrapType,                                      PINDEX  & specificTrapType,                                 PASNUnsigned & timeTicks,                          PSNMPVarBindingList & varsOut){  // parse the response  PASNSequence response(readBuffer);  PINDEX seqLen = response.GetSize();  // check PDU  if (seqLen != 3 ||      response[0].GetType() != PASNObject::Integer ||      response[1].GetType() != PASNObject::String ||      response[2].GetType() != PASNObject::Choice)     return FALSE;  // check the PDU data  const PASNSequence & rPduData = response[2].GetSequence();  seqLen = rPduData.GetSize();  if (seqLen != 6 ||      rPduData.GetChoice()  != Trap ||      rPduData[0].GetType() != PASNObject::ObjectID ||      rPduData[1].GetType() != PASNObject::IPAddress ||      rPduData[2].GetType() != PASNObject::Integer ||      rPduData[3].GetType() != PASNObject::Integer ||      rPduData[4].GetType() != PASNObject::TimeTicks ||      rPduData[5].GetType() != PASNObject::Sequence)     return FALSE;  version          = response[0].GetInteger();  community        = response[1].GetString();  enterprise       = rPduData[0].GetString();  address          = rPduData[1].GetIPAddress();  genericTrapType  = rPduData[2].GetInteger();  specificTrapType = rPduData[3].GetInteger();  timeTicks        = rPduData[4].GetUnsigned();  // check the variable bindings  const PASNSequence & rBindings = rPduData[5].GetSequence();  PINDEX bindingCount = rBindings.GetSize();  // create the return list  for (PINDEX i = 0; i < bindingCount; i++) {    if (rBindings[i].GetType() != PASNObject::Sequence)       return TRUE;    const PASNSequence & rVar = rBindings[i].GetSequence();    if (rVar.GetSize() != 2 ||        rVar[0].GetType() != PASNObject::ObjectID)       return TRUE;    varsOut.Append(rVar[0].GetString(), (PASNObject *)rVar[1].Clone());  }  return TRUE;}// End Of File ///////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -