dmatrixm.c

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

C
1,749
字号
	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		memcpy(obj->Syntax.BufChr, data->ConnHost->Addr, obj->SyntaxLen = ((DNPAP_MATRIX_CONTROL *) local->Data)->AddressLen);		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNIndex(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngInt = local->Index;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNRanking(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngInt = rank;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNPkts(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Pkts;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNOctets(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Octets;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNErrors(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Errors;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixSRankTopNConnections(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, TRUE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, TRUE, &source, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = source->NumberConnect;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNSource(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		memcpy(obj->Syntax.BufChr, data->ConnHost->Addr, obj->SyntaxLen = ((DNPAP_MATRIX_CONTROL *) local->Data)->AddressLen);		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNDest(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		memcpy(obj->Syntax.BufChr, dest->Addr, obj->SyntaxLen = ((DNPAP_MATRIX_CONTROL *) local->Data)->AddressLen);		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNIndex(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngInt = local->Index;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNRanking(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngInt = rank;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNPkts(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Pkts;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNOctets(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Octets;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNErrors(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = data->Stats->Errors;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}WORD DMatrixDRankTopNConnections(SNMP_OBJECT * obj, WORD idlen){	MIB_LOCAL *local = NULL;	ConnInfo *data = NULL;	INT rank = 0;	Host *source = NULL;	Host *dest = NULL;	if ((local = DnpapMatrixRankMibRmon(obj, MatrixControlInstance, idlen)) == NULL)		return SNMP_NOSUCHNAME;	switch (obj->Request)	{	case SNMP_PDU_NEXT:		if (RmonNext(obj, &local, idlen, RANKINDEXSIZE, &data, FALSE, &source, &dest, &rank) == FALSE)			return SNMP_NOSUCHNAME;	case SNMP_PDU_GET:		if (data == NULL && (data = DnpapMatrixSearchTopObj(local->Data, obj, idlen, FALSE, &dest, &rank)) == NULL)			return SNMP_NOSUCHNAME;		obj->Syntax.LngUns = dest->NumberConnect;		return SNMP_NOERROR;	case SNMP_PDU_SET:		return SNMP_READONLY;	}	return SNMP_GENERROR;}ConnInfo *SrcDstGetFirstNext(DNPAP_MATRIX_CONTROL * matrixcontrol, SNMP_OBJECT * obj, WORD idlen, BOOLEAN first, BOOLEAN SDorder, Host ** source, Host ** dest, INT * rank){	BYTE srcdst[2 * HOST_SIZE_ADDR];	BYTE *src, *dst;	INT i, len;	ConnInfo *conn = NULL, *conn2 = NULL;	BOOLEAN nextconn, firstconn;	WORD addrlen = matrixcontrol->AddressLen;	*source = *dest = NULL;	*rank = 0;	if (matrixcontrol->TableSize == 0)		return NULL;	nextconn = FALSE;	firstconn = FALSE;	if (first == FALSE)	{		if (obj->IdLen > idlen + 1)		{			if (obj->Id[idlen + 1] > addrlen)				return NULL;			if (obj->Id[idlen + 1] < addrlen)				first = TRUE;		}		else			first = TRUE;			if (obj->IdLen > idlen + 1 + addrlen +1)		{			if (obj->Id[idlen + 1 + addrlen + 1] > addrlen)				nextconn = TRUE;			if (obj->Id[idlen + 1 + addrlen + 1] < addrlen)				firstconn = TRUE;

⌨️ 快捷键说明

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