📄 capturec.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 "capturee.h"#include "capturec.h"IMPORT BOOLEAN BeholderStrictRMON;IMPORT WORD memoryPerc;BOOLEAN CaptureConfigInit(VOID){SHORT p; if (ConfigGetShort("beholder.capture.memoryperc", &p)) memoryPerc = p; if (memoryPerc > 100) { DnpapMessage(DMC_WARNING, CAPTURE_MEMPERC, "capture: CaptureMemoryPerc set to 75"); memoryPerc = 75; } return TRUE;}BOOLEAN CaptureInit (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)*memoryPerc; if (Buffer->MaxOctetsAvailable > MemoryGetMaxChunk()) Buffer->MaxOctetsAvailable = MemoryGetMaxChunk(); if ((Buffer->RingBuf = RingAlloc(Buffer->MaxOctetsAvailable, CaptureElems(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 CaptureStart (BUFFER *Buffer){ if (BeholderStrictRMON && !BooleanCheckAllTrue(Buffer->ObjectSet)) return FALSE; Buffer->TurnOnTime = SysTime(); Buffer->TurnOnTimeMsec = TimeMsec(); return TRUE;}BOOLEAN CaptureStop (BUFFER *Buffer){ RingFree(Buffer->RingBuf); return TRUE;} LONG CaptureElems(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 + -