📄 dstatm.c
字号:
if (RmonNext(Obj, &local, IdLen, INDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngInt = data->LengthSize; return SNMP_NOERROR; case SNMP_PDU_SET: data = (DNPAP_ETHER_STATS *) local->Data; if (data->Status != SNMP_UNDERCREATION) return SNMP_READONLY; if (Obj->Syntax.LngInt < 1 || Obj->Syntax.LngInt > MAC_FRAME_ETHERNET_CSMACD) return SNMP_BADVALUE; buckets = ceil(((FLOAT) MAC_FRAME_ETHERNET_CSMACD) / Obj->Syntax.LngInt); if ((buckets1 = ReNewBuckets(data->LengthArrayPkts, buckets)) == NULL) return SNMP_BADVALUE; if ((buckets2 = ReNewBuckets(data->LengthArrayOctets, buckets)) == NULL) return SNMP_BADVALUE; data->LengthSize = Obj->Syntax.LngInt; data->LengthBuckets = buckets; data->LengthArrayPkts = buckets1; data->LengthArrayOctets = buckets2; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsTypeBuckets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_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 = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngInt = data->TypeBuckets; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsOwner(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_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 = (DNPAP_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 = (DNPAP_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 DnpapEtherStatsStatus(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_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 = (DNPAP_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 = (DNPAP_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, ðerStats, IdLen, INDEXSIZE)) == NULL) return SNMP_GENERROR; if ((local->Data = DnpapMalloc(sizeof(DNPAP_ETHER_STATS))) == NULL) return SNMP_GENERROR; data = (DNPAP_ETHER_STATS *) local->Data; memset(data, 0, sizeof(DNPAP_ETHER_STATS)); if (DnpapStatCInit(data) == TRUE) { data->Status = SNMP_UNDERCREATION; DnpapMessage(DMC_MESSAGE, DSTAT_CREATE, "detherstat: collector %ld created", local->Index); return SNMP_NOERROR; } DnpapFree(local->Data); MibRemove(Obj, ðerStats, IdLen, INDEXSIZE); return SNMP_GENERROR; default: return SNMP_NOSUCHNAME; } } data = (DNPAP_ETHER_STATS *) local->Data; switch (data->Status) { case SNMP_UNDERCREATION: switch (Obj->Syntax.LngInt) { case SNMP_VALID: if (DnpapStatCStart(data) == TRUE) { data->Status = SNMP_VALID; DnpapMessage(DMC_MESSAGE, DSTAT_ACTIVE, "detherstat: collector %ld active", local->Index); return SNMP_NOERROR; } else return SNMP_BADVALUE; case SNMP_INVALID: if (DnpapStatCStop(data) == TRUE) { DnpapFree(local->Data); DnpapMessage(DMC_MESSAGE, DSTAT_DESTROY, "detherstat: collector %ld destroyed", local->Index); if (MibRemove(Obj, ðerStats, IdLen, INDEXSIZE) == TRUE) return SNMP_NOERROR; } return SNMP_GENERROR; default: return SNMP_BADVALUE; } case SNMP_VALID: switch (Obj->Syntax.LngInt) { case SNMP_INVALID: if (DnpapStatCStop(data) == TRUE) { DnpapFree(local->Data); DnpapMessage(DMC_MESSAGE, DSTAT_DESTROY, "detherstat: collector %ld destroyed", local->Index); if (MibRemove(Obj, ðerStats, IdLen, INDEXSIZE) == TRUE) return SNMP_NOERROR; } return SNMP_GENERROR; case SNMP_VALID: return SNMP_NOERROR; default: return SNMP_BADVALUE; } } } return SNMP_GENERROR;}WORD DnpapEtherStatsIFTIndex(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, IFTINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, IFTINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = local->Index; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsIFTBucket(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, IFTINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, IFTINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = Obj->Id[IdLen + 1]; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsIFTPkts(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; if ((local = MibRmon(Obj, etherStats, IdLen, IFTINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, IFTINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngUns = data->IFTArrayPkts[Obj->Id[IdLen + 1] - 1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsIFTOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; if ((local = MibRmon(Obj, etherStats, IdLen, IFTINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, IFTINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngUns = data->IFTArrayOctets[Obj->Id[IdLen + 1] - 1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsLengthIndex(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, LENGTHINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, LENGTHINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = local->Index; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsLengthBucket(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, LENGTHINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, LENGTHINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = Obj->Id[IdLen + 1]; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsLengthPkts(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; if ((local = MibRmon(Obj, etherStats, IdLen, LENGTHINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, LENGTHINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngUns = data->LengthArrayPkts[Obj->Id[IdLen + 1] - 1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsLengthOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; if ((local = MibRmon(Obj, etherStats, IdLen, LENGTHINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, LENGTHINDEXSIZE, NULL) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; Obj->Syntax.LngUns = data->LengthArrayOctets[Obj->Id[IdLen + 1] - 1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsTypeIndex(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; TypeEntry *entry = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, TYPEINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, TYPEINDEXSIZE, &entry) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = local->Index; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsTypeType(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; TypeEntry *entry = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, TYPEINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, TYPEINDEXSIZE, &entry) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: Obj->Syntax.LngInt = Obj->Id[IdLen + 1]; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DnpapEtherStatsTypePkts(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; TypeEntry *entry = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, TYPEINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, TYPEINDEXSIZE, &entry) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; if (entry == NULL && (entry = DnpapTypeEntrySearch(data, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = entry->Pkts; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DnpapEtherStatsTypeOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DNPAP_ETHER_STATS *data; TypeEntry *entry = NULL; if ((local = MibRmon(Obj, etherStats, IdLen, TYPEINDEXSIZE)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, TYPEINDEXSIZE, &entry) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: data = (DNPAP_ETHER_STATS *) local->Data; if (entry == NULL && (entry = DnpapTypeEntrySearch(data, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = entry->Octets; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -