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

📄 dcaptc.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   */#include <dnpap.h>#include <dtime.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <ring.h>#include <timer.h>#include <mac.h>#include <protocol.h>#include <message.h>#include <config.h>#include <sysmib.h>#include <maxmem.h>#include <memory.h>#include "dcapte.h"#include "dcaptc.h"IMPORT BOOLEAN BeholderStrictRMON;IMPORT WORD dnpapMemoryPerc;BOOLEAN DnpapCaptureConfigInit(VOID){SHORT p;    if (ConfigGetShort("beholder.dcapture.memoryperc", &p))        dnpapMemoryPerc = p;    if (dnpapMemoryPerc > 100)    {        DnpapMessage(DMC_WARNING, DCAPTURE_MEMPERC, "dcapture: CaptureMemoryPerc set to 75");        dnpapMemoryPerc = 75;    }    return TRUE;}BOOLEAN DnpapCaptureInit (DNPAP_BUFFER *Buffer){    Buffer->ChannelIndex = 1;          /* first channel */    Buffer->ChannelAccept = TRUE;    Buffer->FullStatus = 1;            /* spaceAvailable */    Buffer->FullAction = 1;            /* lockWhenFull */    Buffer->CaptureSliceSize = 100;    Buffer->DownloadSliceSize = 100;    Buffer->MaxOctetsRequested = -1;    Buffer->MaxOctetsGranted = -1;    Buffer->MaxOctetsAvailable = 0;        Buffer->MaxOctetsAvailable = (MemoryGetAvail()/100)*dnpapMemoryPerc;	    if (Buffer->MaxOctetsAvailable > MemoryGetMaxChunk())        Buffer->MaxOctetsAvailable = MemoryGetMaxChunk();    if ((Buffer->RingBuf = RingAlloc(Buffer->MaxOctetsAvailable,     						      DnpapCaptureElems(Buffer->MaxOctetsAvailable, Buffer->CaptureSliceSize))) == NULL)        return FALSE;	BooleanSetAllTrue(Buffer->ObjectSet);	BooleanSetFalse(Buffer->ObjectSet, CAPTURE_BOOLEAN_INDEX);	BooleanSetFalse(Buffer->ObjectSet, CAPTURE_BOOLEAN_OWNER);    return TRUE;}BOOLEAN DnpapCaptureStart (DNPAP_BUFFER *Buffer){	if (BeholderStrictRMON && !BooleanCheckAllTrue(Buffer->ObjectSet))		return FALSE;    Buffer->TurnOnTime = SysTime();    Buffer->TurnOnTimeMsec = TimeMsec();	    return TRUE;}BOOLEAN DnpapCaptureStop (DNPAP_BUFFER *Buffer){	RingFree(Buffer->RingBuf);	    return TRUE;}LONG DnpapCaptureElems(LONG available, LONG size){    if (size == 0)        size = 100;    return (available/size)*2;          /* make sure number is even */}

⌨️ 快捷键说明

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