loop.c

来自「嵌入式RMON,RMON为Remote monitor的缩写,基于SNMP为网络」· C语言 代码 · 共 87 行

C
87
字号
/* Beholder RMON ethernet network monitor,Copyright (C) 1993 DNPAP group *//* See file COPYING 'GNU General Public Licence' for copyright details   */#include <stdio.h>#include <string.h>#include <mac.h>#include <config.h>#include "loop.h"#define LOOP_MTU    4096    static BOOLEAN Send(MAC_IFACE *iface, CHAIN *chain);static BOOLEAN Stat(MAC_IFACE *iface, MAC_STAT *stat);BOOLEAN LoopInit(void){    BYTE            name[255];    BYTE            *descr;    MAC_IFACE       *loop;    WORD            i;    static BOOLEAN  init = FALSE;        if (!init)    {        i = 1;        sprintf(name, "loop.iface.name.%d", i);        while (ConfigGetString(name, &descr))        {            loop = DnpapMalloc(sizeof(MAC_IFACE));            if (loop!=0)            {                strcpy(loop->descr, descr);                loop->Send          = Send;                loop->Stat          = Stat;                loop->type          = MAC_TYPE_SOFT_LOOPBACK;                loop->speed         = 0;                loop->mtu           = LOOP_MTU;                loop->statusOper    = TRUE;                loop->statusAdmin   = TRUE;                loop->arp           = MAC_ARP_NONE;                loop->addrLength    = 0;                MacIfaceRegister(loop);            }                        i++;            sprintf(name, "loop.iface.name.%d", i);        }        init = TRUE;    }    return init;}static BOOLEAN Send(MAC_IFACE *iface, CHAIN *chain){    CHAIN       *new;    MAC_INFO    info;    WORD        length;        length = ChainLength(chain);    new = ChainAlloc(0, 0, length, length, 0, 0);    if (new)    {        if (ChainCopy(chain, new->buffer, length))        {               info.length      = length;            info.copied      = length;            info.time        = 0L;            info.promiscuous = FALSE;            MacRcve(iface, new, &info);            ChainFree(new);            return TRUE;        }    }    return FALSE;}static BOOLEAN Stat(MAC_IFACE *iface, MAC_STAT *stat){    return TRUE;}

⌨️ 快捷键说明

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