📄 dcaptc.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 + -