📄 sysmib.c
字号:
/* Beholder RMON ethernet network monitor,Copyright (C) 1993 DNPAP group *//* See file COPYING 'GNU General Public Licence' for copyright details *//************************************************************************** MODULE INFORMATION **************************** FILE NAME: sys.c** SYSTEM NAME: beholder** MODULE NAME: sys** ORIGINAL AUTHOR(S): M.F.B. de Greeve** VERSION NUMBER: 1.0** CREATION DATE: 1992/7/13** DESCRIPTION: MIB-support for system group:** sysDescr, sysObjectId, sysUpTime, sysContact** sysName, sysLocation, sysServices*************************************************************************/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <dnpap.h>#include <config.h>#include <mibsup.h>#include <mibrqs.h>#include <timer.h>#include <dtime.h>#include "sysmib.h"static ULONG SysUpStartTime;static struct SYS{ CHAR Descr[SNMP_SIZE_BUFCHR]; LONG ObjectID[SNMP_SIZE_BUFINT]; WORD ObjectIDLen; CHAR Contact[SNMP_SIZE_BUFCHR]; CHAR Name[SNMP_SIZE_BUFCHR]; CHAR Location[SNMP_SIZE_BUFCHR]; LONG Services;} sys;/******************************************************************* NAME: SysInit** SYNOPSIS: VOID SysInit(VOID)** PARAMETERS: VOID** DESCRIPTION: initializes the system collector.** REMARKS: ONLY FOR BEHOLDER & MIB must be initialized !** RETURNS: VOID*******************************************************************/BOOLEAN SysInit(VOID){ CHAR *p, *t; LONG l; CHAR ObjectID[SNMP_SIZE_BUFCHR]; SysUpStartTime = TimeTimeTicks(); if (!ConfigGetString("beholder.sys.description", &p) || strlen(p) > SNMP_SIZE_BUFCHR) p="RMON-based network monitor"; strcpy(sys.Descr, p); if (!ConfigGetString("beholder.sys.contact", &p) || strlen(p) > SNMP_SIZE_BUFCHR) p="DNPAP <btng@dnpap.et.tudelft.nl>"; strcpy(sys.Contact, p); if (!ConfigGetString("beholder.sys.name", &p) || strlen(p) > SNMP_SIZE_BUFCHR) p="beholder - the next generation"; strcpy(sys.Name, p); if (!ConfigGetString("beholder.sys.location", &p) || strlen(p) > SNMP_SIZE_BUFCHR) p="Delft University of Technology"; strcpy(sys.Location, p); if (!ConfigGetLong("beholder.sys.services", &l)) sys.Services = 127L; else sys.Services = l; if (!ConfigGetString("beholder.sys.objectid", &p) || strlen(p) > SNMP_SIZE_BUFCHR) p="1.3.6.1.4.1.464.1"; strcpy(ObjectID, p); sys.ObjectIDLen = 0; if ((t = strtok(ObjectID, ".")) != NULL) { sys.ObjectID[sys.ObjectIDLen++] = atol(t); while ((t = strtok(NULL, ".")) != NULL) sys.ObjectID[sys.ObjectIDLen++] = atol(t); } return TRUE;}/******************************************************************* NAME: SysTime** SYNOPSIS: ULONG SysTime(VOID)** PARAMETERS: VOID ** DESCRIPTION: gives the time since the system was started.** RETURNS: time in 1/100 sec.*******************************************************************/ULONG SysTime(VOID){ /* very costly version: does a MibRequest of sysUpTime *//* SNMP_OBJECT time = {SNMP_PDU_GET, {1,3,6,1,2,1,1,3,0}, 9}; if (MibRequest(&time) != SNMP_NOERROR) return 0; else return time.Syntax.LngUns; */ return TimeTimeTicks() - SysUpStartTime;}WORD sysDescr(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; strcpy(Obj->Syntax.BufChr, sys.Descr); Obj->SyntaxLen = strlen(Obj->Syntax.BufChr); return SNMP_NOERROR;} WORD sysObjectID(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; memcpy(Obj->Syntax.BufInt, sys.ObjectID, sys.ObjectIDLen * sizeof(LONG)); Obj->SyntaxLen = sys.ObjectIDLen; return SNMP_NOERROR;}WORD sysUpTime(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = SysTime(); return SNMP_NOERROR;}WORD sysContact(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; if (Obj->Request == SNMP_PDU_SET) { memcpy(sys.Contact, Obj->Syntax.BufChr, Obj->SyntaxLen); sys.Contact[Obj->SyntaxLen] = '\0'; } else { strcpy(Obj->Syntax.BufChr, sys.Contact); Obj->SyntaxLen = strlen(Obj->Syntax.BufChr); } return SNMP_NOERROR;}WORD sysName(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; if (Obj->Request == SNMP_PDU_SET) { memcpy(sys.Name, Obj->Syntax.BufChr, Obj->SyntaxLen); sys.Name[Obj->SyntaxLen] = '\0'; } else { strcpy(Obj->Syntax.BufChr, sys.Name); Obj->SyntaxLen = strlen(Obj->Syntax.BufChr); } return SNMP_NOERROR;}WORD sysLocation(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; if (Obj->Request == SNMP_PDU_SET) { memcpy(sys.Location, Obj->Syntax.BufChr, Obj->SyntaxLen); sys.Location[Obj->SyntaxLen] = '\0'; } else { strcpy(Obj->Syntax.BufChr, sys.Location); Obj->SyntaxLen = strlen(Obj->Syntax.BufChr); } return SNMP_NOERROR;}WORD sysServices(SNMP_OBJECT *Obj, WORD IdLen){ if (MibSimple(Obj, IdLen) == FALSE) return SNMP_NOSUCHNAME; Obj->Syntax.LngInt = sys.Services; return SNMP_NOERROR;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -