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

📄 sysmib.c

📁 嵌入式RMON,RMON为Remote monitor的缩写,基于SNMP为网络提供主动监控及错误告警,智能交换路由必备协议
💻 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 + -