⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dstatm.c

📁 嵌入式RMON,RMON为Remote monitor的缩写,基于SNMP为网络提供主动监控及错误告警,智能交换路由必备协议
💻 C
📖 第 1 页 / 共 3 页
字号:
		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, &etherStats, 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, &etherStats, 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, &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 (DnpapStatCStop(data) == TRUE)				{					DnpapFree(local->Data);					DnpapMessage(DMC_MESSAGE, DSTAT_DESTROY, "detherstat: 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;			}		}	}	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 + -