statm.c

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

C
618
字号
WORD etherStatsFragments (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->Fragments;            return SNMP_NOERROR;    }}WORD etherStatsJabbers (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->Jabbers;            return SNMP_NOERROR;    }}WORD etherStatsCollisions (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->Collisions;            return SNMP_NOERROR;    }}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;    }}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;    }}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;    }}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;    }}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;    }}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;    }}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;            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;            return SNMP_NOERROR;    }}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 (StatCInit(data) == TRUE)                        {                            data->Status = SNMP_UNDERCREATION;                            DnpapMessage(DMC_MESSAGE, STAT_CREATE, "etherStat: 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 (StatCStart(data) == TRUE)                            {                                data->Status = SNMP_VALID;                                DnpapMessage(DMC_MESSAGE, STAT_ACTIVE, "etherStat: collector %ld active", local->Index);                                return SNMP_NOERROR;                            }                            else                                return SNMP_GENERROR;                        case SNMP_INVALID:                            if (StatCStop(data) == TRUE)                            {                                DnpapFree(local->Data);                                DnpapMessage(DMC_MESSAGE, STAT_DESTROY, "etherStat: 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 (StatCStop(data) == TRUE)                            {                                DnpapFree(local->Data);                                DnpapMessage(DMC_MESSAGE, STAT_DESTROY, "etherStat: 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;                    }            }    }}

⌨️ 快捷键说明

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