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

📄 statm.c

📁 嵌入式RMON,RMON为Remote monitor的缩写,基于SNMP为网络提供主动监控及错误告警,智能交换路由必备协议
💻 C
📖 第 1 页 / 共 2 页
字号:
        if (data->Status != SNMP_VALID)        {            Obj->Syntax.LngUns = 0UL;            return SNMP_NOERROR;        }        MacStatistics(data->Iface, &stat);        Obj->Syntax.LngUns = stat.UndersizePkts - data->BaseStat.UndersizePkts;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsOversizePkts (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;MAC_STAT     stat;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        if (data->Status != SNMP_VALID)        {            Obj->Syntax.LngUns = 0UL;            return SNMP_NOERROR;        }        MacStatistics(data->Iface, &stat);        Obj->Syntax.LngUns = stat.OversizePkts - data->BaseStat.OversizePkts;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsFragments (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;MAC_STAT     stat;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        if (data->Status != SNMP_VALID)        {            Obj->Syntax.LngUns = 0UL;            return SNMP_NOERROR;        }        MacStatistics(data->Iface, &stat);        Obj->Syntax.LngUns = stat.Fragments - data->BaseStat.Fragments;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsJabbers (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;MAC_STAT     stat;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        if (data->Status != SNMP_VALID)        {            Obj->Syntax.LngUns = 0UL;            return SNMP_NOERROR;        }        MacStatistics(data->Iface, &stat);        Obj->Syntax.LngUns = stat.Jabbers - data->BaseStat.Jabbers;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsCollisions (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;MAC_STAT     stat;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        if (data->Status != SNMP_VALID)        {            Obj->Syntax.LngUns = 0UL;            return SNMP_NOERROR;        }        MacStatistics(data->Iface, &stat);        Obj->Syntax.LngUns = stat.Collisions - data->BaseStat.Collisions;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts64Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts64Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts65to127Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts65to127Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts128to255Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts128to255Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts256to511Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts256to511Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts512to1023Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts512to1023Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsPkts1024to1518Octets (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngUns = data->Pkts1024to1518Octets;        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsOwner (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    if ((local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE)) == NULL)        return SNMP_NOSUCHNAME;    switch (Obj->Request)    {    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        data = (ETHER_STATS*) local->Data;		if (BeholderStrictRMON && !BooleanCheck(data->ObjectSet, STAT_BOOLEAN_OWNER))			return SNMP_NOSUCHNAME;        memcpy (Obj->Syntax.BufChr, data->Owner, data->OwnerLen);        Obj->SyntaxLen = data->OwnerLen;        return SNMP_NOERROR;    case SNMP_PDU_SET:        data = (ETHER_STATS*) local->Data;        if (data->Status != SNMP_UNDERCREATION)            return SNMP_READONLY;        memcpy (data->Owner, Obj->Syntax.BufChr, Obj->SyntaxLen);        data->OwnerLen = Obj->SyntaxLen;		BooleanSetTrue(data->ObjectSet, STAT_BOOLEAN_OWNER);        return SNMP_NOERROR;    }    return SNMP_GENERROR;}WORD EtherStatsStatus (SNMP_OBJECT *Obj, WORD IdLen){MIB_LOCAL    *local = NULL;ETHER_STATS  *data;    local = MibRmon(Obj, etherStats, IdLen, INDEXSIZE);    switch (Obj->Request)    {    case SNMP_PDU_GET:        if (local == NULL)        {            Obj->Syntax.LngInt = SNMP_INVALID;            return SNMP_NOSUCHNAME;        }        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngInt = data->Status;        return SNMP_NOERROR;    case SNMP_PDU_NEXT:        if (RmonNext (Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE)        {            Obj->Syntax.LngInt = SNMP_INVALID;            return SNMP_NOSUCHNAME;        }        data = (ETHER_STATS*) local->Data;        Obj->Syntax.LngInt = data->Status;        return SNMP_NOERROR;    case SNMP_PDU_SET:        if (local == NULL)        {            switch (Obj->Syntax.LngInt)            {            case SNMP_CREATEREQUEST:                if ((local = MibInsert(Obj, &etherStats, IdLen, INDEXSIZE)) == NULL)                    return SNMP_GENERROR;                if ((local->Data = DnpapMalloc(sizeof(ETHER_STATS))) == NULL)                    return SNMP_GENERROR;                data = (ETHER_STATS*) local->Data;                memset(data, 0, sizeof(ETHER_STATS));                if (EtherStatsCInit(data) == TRUE)                {                    data->Status = SNMP_UNDERCREATION;                    DnpapMessage(DMC_MESSAGE, STAT_CREATE, "etherStats: collector %ld created", local->Index);                    return SNMP_NOERROR;                }                DnpapFree(local->Data);                MibRemove (Obj, &etherStats, IdLen, INDEXSIZE);                return SNMP_GENERROR;            default:                return SNMP_NOSUCHNAME;            }        }        data = (ETHER_STATS*) local->Data;        switch (data->Status)        {        case SNMP_UNDERCREATION:            switch (Obj->Syntax.LngInt)            {            case SNMP_VALID:                if (EtherStatsCStart(data) == TRUE)                {                    data->Status = SNMP_VALID;                    DnpapMessage(DMC_MESSAGE, STAT_ACTIVE, "etherStats: collector %ld active", local->Index);                    return SNMP_NOERROR;                }                else                    return SNMP_BADVALUE;            case SNMP_INVALID:                if (EtherStatsCStop(data) == TRUE)                {                    DnpapFree(local->Data);                    DnpapMessage(DMC_MESSAGE, STAT_DESTROY, "etherStats: collector %ld destroyed", local->Index);                    if (MibRemove (Obj, &etherStats, IdLen, INDEXSIZE) == TRUE)                        return SNMP_NOERROR;                }                return SNMP_GENERROR;            default:                return SNMP_BADVALUE;            }        case SNMP_VALID:            switch (Obj->Syntax.LngInt)            {            case SNMP_INVALID:                if (EtherStatsCStop(data) == TRUE)                {                    DnpapFree(local->Data);                    DnpapMessage(DMC_MESSAGE, STAT_DESTROY, "etherStats: collector %ld destroyed", local->Index);                    if (MibRemove (Obj, &etherStats, IdLen, INDEXSIZE) == TRUE)                        return SNMP_NOERROR;                }                return SNMP_GENERROR;            case SNMP_VALID:                return SNMP_NOERROR;            default:                return SNMP_BADVALUE;            }        }    }    return SNMP_GENERROR;}

⌨️ 快捷键说明

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