discconm.c

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

C
1,446
字号
                    DnpapMessage(DMC_MESSAGE, DISC_DESTROY, "discconn: collector %ld destroyed", local->Index);                    if (MibRemove (obj, &DiscConnControlInstance, idlen, CONTROLINDEXSIZE) == TRUE)                        return SNMP_NOERROR;                }                return SNMP_GENERROR;            default:                return SNMP_BADVALUE;            }        case SNMP_VALID:            switch (obj->Syntax.LngInt)            {            case SNMP_VALID:                return SNMP_NOERROR;            case SNMP_INVALID:                if (DiscConnCStop(data) == TRUE)                {                    DnpapFree(local->Data);                    DnpapMessage(DMC_MESSAGE, DISC_DESTROY, "discconn: collector %ld destroyed", local->Index);                    if (MibRemove (obj, &DiscConnControlInstance, idlen, CONTROLINDEXSIZE) == TRUE)                        return SNMP_NOERROR;                }                return SNMP_GENERROR;            default:                return SNMP_BADVALUE;            }        }    }    return SNMP_GENERROR;}WORD DiscConnSDEthSourceAddress(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_ETH, &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, TRUE) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, TRUE)) == 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 DiscConnSDEthDestAddress(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_ETH, &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, TRUE) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, TRUE)) == 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 DiscConnSDIPSourceAddress(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, TRUE) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, TRUE)) == 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 DiscConnSDIPDestAddress(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, TRUE) == FALSE)            return SNMP_NOSUCHNAME;    case SNMP_PDU_GET:        if (data == NULL && (data = DiscConnSearchHash(local->Data, type, obj, idlen, TRUE)) == 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 DiscConnSDUDPSourceAddress(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, TRUE) == 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 = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1];        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDUDPDestAddress(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, TRUE) == 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 = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1];        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDTCPSourceAddress(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, TRUE) == 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 = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1];        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDTCPDestAddress(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, TRUE) == 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 = 256*(LONG)data->SrcDst[offset] + data->SrcDst[offset+1];        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDIndex(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, 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, TRUE) == 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 DiscConnSDPkts(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, 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, TRUE) == 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.LngUns = data->Pkts;        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDOctets(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, 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, TRUE) == 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.LngUns = data->Octets;        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnSDLRUTime(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, 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, TRUE) == 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.LngUns = data->LRUTime;        return SNMP_NOERROR;    case SNMP_PDU_SET:    	return SNMP_READONLY;    }    return SNMP_GENERROR;}WORD DiscConnDSEthSourceAddress(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_ETH, &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 DiscConnDSEthDestAddress(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_ETH, &offset, &sublen, TRUE)) == 0)        return SNMP_NOSUCHNAME;

⌨️ 快捷键说明

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