📄 discconm.c
字号:
if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; for (i = 0; i < sublen; i++) obj->Syntax.BufChr[i] = (BYTE)data->SrcDst[offset+i]; obj->SyntaxLen = sublen; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSIPSourceAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD i, len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_IP, &offset, &sublen, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; for (i = 0; i < sublen; i++) obj->Syntax.BufChr[i] = (BYTE)data->SrcDst[offset+i]; obj->SyntaxLen = sublen; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSIPDestAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD i, len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_IP, &offset, &sublen, TRUE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; for (i = 0; i < sublen; i++) obj->Syntax.BufChr[i] = (BYTE)data->SrcDst[offset+i]; obj->SyntaxLen = sublen; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSUDPSourceAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_UDP, &offset, &sublen, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngInt = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSUDPDestAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_UDP, &offset, &sublen, TRUE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngInt = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSTCPSourceAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_TCP, &offset, &sublen, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngInt = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSTCPDestAddress(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len, offset, sublen; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, DISC_TYPE_TCP, &offset, &sublen, TRUE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngInt = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1]; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSIndex(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, TRUE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngInt = local->Index; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSPkts(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngUns = data->Pkts; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSOctets(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngUns = data->Octets; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}WORD DiscConnDSLRUTime(SNMP_OBJECT *obj, WORD idlen){MIB_LOCAL *local = NULL;DISCCONN *data = NULL;INT type;WORD len; if ((type = DiscTableType(obj, idlen)) == 0) return SNMP_NOSUCHNAME; if ((len = DiscTableLen(type, type, NULL, NULL, FALSE)) == 0) return SNMP_NOSUCHNAME; if ((local = MibRmon(obj, DiscConnControlInstance, idlen, len)) == NULL) return SNMP_NOSUCHNAME; switch (obj->Request) { case SNMP_PDU_NEXT: if (RmonNext(obj, &local, idlen, type, len, &data, FALSE) == FALSE) return SNMP_NOSUCHNAME; case SNMP_PDU_GET: if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, FALSE)) == NULL) return SNMP_NOSUCHNAME; obj->Syntax.LngUns = data->LRUTime; return SNMP_NOERROR; case SNMP_PDU_SET: return SNMP_READONLY; } return SNMP_GENERROR;}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_ETHCONNSD || obj->Id[disctablelen] == DISC_TABLE_ETHCONNDS) return DISC_TYPE_ETH; if (obj->Id[disctablelen] == DISC_TABLE_IPCONNSD || obj->Id[disctablelen] == DISC_TABLE_IPCONNDS) return DISC_TYPE_IP; if (obj->Id[disctablelen] == DISC_TABLE_UDPCONNSD || obj->Id[disctablelen] == DISC_TABLE_UDPCONNDS) return DISC_TYPE_UDP; if (obj->Id[disctablelen] == DISC_TABLE_TCPCONNSD || obj->Id[disctablelen] == DISC_TABLE_TCPCONNDS) return DISC_TYPE_TCP; return 0;}WORD DiscTableLen(INT type, INT addrtype, WORD *offset, WORD *sublen, BOOLEAN sd){LONG disctable[] = { BTNG_MIB,16 };INT disctablelen = sizeof(disctable)/sizeof(disctable[0]);WORD base = 0; switch (type) { case DISC_TYPE_ETH: base = DISC_SIZE_ETHADDR; break; case DISC_TYPE_IP: base = DISC_SIZE_TOIPADDR; break; case DISC_TYPE_UDP: base = DISC_SIZE_TOUDPADDR; break; case DISC_TYPE_TCP: base = DISC_SIZE_TOTCPADDR; break; } switch (addrtype) { case DISC_TYPE_ETH: if (sd == TRUE) offset != NULL ? *offset = 0 : 0; else offset != NULL ? *offset = base : 0; sublen != NULL ? *sublen = DISC_SIZE_ETHADDR : 0; break; case DISC_TYPE_IP: if (sd == TRUE) offset != NULL ? *offset = DISC_SIZE_ETHADDR : 0; else offset != NULL ? *offset = DISC_SIZE_ETHADDR + base : 0; sublen != NULL ? *sublen = DISC_SIZE_IPADDR : 0; break; case DISC_TYPE_UDP: if (sd == TRUE) offset != NULL ? *offset = DISC_SIZE_TOIPADDR : 0; else offset != NULL ? *offset = DISC_SIZE_TOIPADDR + base : 0; sublen != NULL ? *sublen = DISC_SIZE_UDPADDR : 0; break; case DISC_TYPE_TCP: if (sd == TRUE) offset != NULL ? *offset = DISC_SIZE_TOIPADDR : 0; else offset != NULL ? *offset = DISC_SIZE_TOIPADDR + base : 0; sublen != NULL ? *sublen = DISC_SIZE_TCPADDR : 0; break; } switch (type) { case DISC_TYPE_ETH: return DISC_ETHCONNINDEXSIZE; case DISC_TYPE_IP: return DISC_IPCONNINDEXSIZE; case DISC_TYPE_UDP: return DISC_UDPCONNINDEXSIZE; case DISC_TYPE_TCP: return DISC_TCPCONNINDEXSIZE; } return 0;}VOID DiscConnChannelStop(LONG channelIndex){MIB_LOCAL *discconninstance;DISCCONN_CONTROL *discconncontrol; for (discconninstance = DiscConnControlInstance; discconninstance != NULL; discconninstance = discconninstance->Next) { discconncontrol = discconninstance->Data; if (discconncontrol->Status == SNMP_VALID && discconncontrol->Channel == TRUE && discconncontrol->ChannelAccept == TRUE && discconncontrol->Source[discconncontrol->SourceLen-1] == channelIndex) discconncontrol->ChannelAccept = FALSE; }}VOID DiscConnPkt(LONG channelIndex, PROT_PKT *pkt){MIB_LOCAL *discconninstance;DISCCONN_CONTROL *discconncontrol; for (discconninstance = DiscConnControlInstance; discconninstance != NULL; discconninstance = discconninstance->Next) { discconncontrol = discconninstance->Data; if (discconncontrol->Status == SNMP_VALID && discconncontrol->Channel == TRUE && discconncontrol->ChannelAccept == TRUE && discconncontrol->Source[discconncontrol->SourceLen-1] == channelIndex) DiscConnHandlePkt(discconncontrol, pkt); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -