📄 discnodm.c
字号:
if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeSearchHash(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->InOctets; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeOutOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeSearchHash(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->OutOctets; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeLRUTime(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeSearchHash(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->LRUTime; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeCreationOrder(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngInt = Obj->Id[IdLen + 1]; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeIndex(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngInt = local->Index; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeInPkts(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->InPkts; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeOutPkts(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->OutPkts; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeInOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->InOctets; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeOutOctets(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->OutOctets; return SNMP_NOERROR; } return SNMP_GENERROR;}WORD DiscNodeTimeLRUTime(SNMP_OBJECT * Obj, WORD IdLen){ MIB_LOCAL *local = NULL; DISCNODE *data = NULL; INT type; WORD len; if ((type = DiscTableType(Obj, IdLen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(Obj, DiscNodeControlInstance, IdLen, len)) == NULL) return SNMP_NOSUCHNAME; switch (Obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(Obj, &local, IdLen, type, len, &data) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscNodeTimeSearch(local->Data, type, Obj, IdLen)) == NULL) return SNMP_NOSUCHNAME; Obj->Syntax.LngUns = data->LRUTime; return SNMP_NOERROR; } return SNMP_GENERROR;}LONG TableSize(DISCNODE_CONTROL * discnodecontrol, INT type){ switch (type) { case DISC_TYPE_ETHTIME: return discnodecontrol->EthTableSize; case DISC_TYPE_IPTIME: return discnodecontrol->IPTableSize; case DISC_TYPE_UDPTIME: return discnodecontrol->UDPTableSize; case DISC_TYPE_TCPTIME: return discnodecontrol->TCPTableSize; default: DnpapMessage(DMC_FATAL, DISC_TYPE, "discnodecontrol: unknown type"); DnpapExit(DISC_TYPE); } return 0;}INT DiscTableType(SNMP_OBJECT * obj, WORD idlen){ LONG disctable[] = {BTNG_MIB, 16}; INT disctablelen = sizeof(disctable) / sizeof(disctable[0]); if (obj->Id[disctablelen] == DISC_TABLE_ETHNODE) return DISC_TYPE_ETH; if (obj->Id[disctablelen] == DISC_TABLE_IPNODE) return DISC_TYPE_IP; if (obj->Id[disctablelen] == DISC_TABLE_UDPNODE) return DISC_TYPE_UDP; if (obj->Id[disctablelen] == DISC_TABLE_TCPNODE) return DISC_TYPE_TCP; if (obj->Id[disctablelen] == DISC_TABLE_ETHTIME) return DISC_TYPE_ETHTIME; if (obj->Id[disctablelen] == DISC_TABLE_IPTIME) return DISC_TYPE_IPTIME; if (obj->Id[disctablelen] == DISC_TABLE_UDPTIME) return DISC_TYPE_UDPTIME; if (obj->Id[disctablelen] == DISC_TABLE_TCPTIME) return DISC_TYPE_TCPTIME; return 0;}WORD DiscTableLen(INT type, INT addrtype, WORD * offset, WORD * sublen){ LONG disctable[] = {BTNG_MIB, 16}; INT disctablelen = sizeof(disctable) / sizeof(disctable[0]); switch (addrtype) { case DISC_TYPE_ETH: case DISC_TYPE_ETHTIME: offset != NULL ? *offset = 0 : 0; sublen != NULL ? *sublen = DISC_SIZE_ETHADDR : 0; break; case DISC_TYPE_IP: case DISC_TYPE_IPTIME: offset != NULL ? *offset = DISC_SIZE_ETHADDR : 0; sublen != NULL ? *sublen = DISC_SIZE_IPADDR : 0; break; case DISC_TYPE_UDP: case DISC_TYPE_UDPTIME: offset != NULL ? *offset = DISC_SIZE_TOIPADDR : 0; sublen != NULL ? *sublen = DISC_SIZE_UDPADDR : 0; break; case DISC_TYPE_TCP: case DISC_TYPE_TCPTIME: offset != NULL ? *offset = DISC_SIZE_TOIPADDR : 0; sublen != NULL ? *sublen = DISC_SIZE_TCPADDR : 0; break; default: DnpapMessage(DMC_FATAL, DISC_TYPE, "discnodecontrol: unknown type"); DnpapExit(DISC_TYPE); } switch (type) { case DISC_TYPE_ETH: return DISC_ETHNODEINDEXSIZE; case DISC_TYPE_IP: return DISC_IPNODEINDEXSIZE; case DISC_TYPE_UDP: return DISC_UDPNODEINDEXSIZE; case DISC_TYPE_TCP: return DISC_TCPNODEINDEXSIZE; case DISC_TYPE_ETHTIME: return DISC_ETHTIMEINDEXSIZE; case DISC_TYPE_IPTIME: return DISC_IPTIMEINDEXSIZE; case DISC_TYPE_UDPTIME: return DISC_UDPTIMEINDEXSIZE; case DISC_TYPE_TCPTIME: return DISC_TCPTIMEINDEXSIZE; default: DnpapMessage(DMC_FATAL, DISC_TYPE, "discnodecontrol: unknown type"); DnpapExit(DISC_TYPE); } return 0;}VOID DiscNodeChannelStop(LONG channelIndex){ MIB_LOCAL *discinstance; DISCNODE_CONTROL *discnodecontrol; for (discinstance = DiscNodeControlInstance; discinstance != NULL; discinstance = discinstance->Next) { discnodecontrol = discinstance->Data; if (discnodecontrol->Status == SNMP_VALID && discnodecontrol->Channel == TRUE && discnodecontrol->ChannelAccept == TRUE && discnodecontrol->Source[discnodecontrol->SourceLen - 1] == channelIndex) discnodecontrol->ChannelAccept = FALSE; }}VOID DiscNodePkt(LONG channelIndex, PROT_PKT * pkt){ MIB_LOCAL *discinstance; DISCNODE_CONTROL *discnodecontrol; for (discinstance = DiscNodeControlInstance; discinstance != NULL; discinstance = discinstance->Next) { discnodecontrol = discinstance->Data; if (discnodecontrol->Status == SNMP_VALID && discnodecontrol->Channel == TRUE && discnodecontrol->ChannelAccept == TRUE && discnodecontrol->Source[discnodecontrol->SourceLen - 1] == channelIndex) DiscNodeHandlePkt(discnodecontrol, pkt); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -