📄 mibgetlib.c
字号:
#include "VxWorks.h"
#include "sockLib.h"
#include "inetLib.h"
#include "taskLib.h"
#include "stdioLib.h"
#include "strLib.h"
#include "ioLib.h"
#include "fioLib.h"
#include "snmp.h"
int GetOidValue(SNMP_PDU *snmp,VARLIST *vartemp)
{
int flag = OK;
u_char *tempbuf;
long tempoid;
static u_char oid_start[8] = {0x2b,6,1,4,1,0xa9,0x56,0x64};
static u_char oid_hp[7] = {0x2b,6,1,4,1,0xb,2};
static u_char oid_sys[6] = {0x2b,6,1,2,1,1};
static u_char oid_if[6] = {0x2b,6,1,2,1,2};
static u_char oid_ip[6] = {0x2b,6,1,2,1,4};
static u_char oid_icmp[6] = {0x2b,6,1,2,1,5};
static u_char oid_tcp[6] = {0x2b,6,1,2,1,6};
static u_char oid_udp[6] = {0x2b,6,1,2,1,7};
static u_char oid_snmp[6] = {0x2b,6,1,2,1,11};
static u_char oid_hr[6] = {0x2b,6,1,2,1,25};
static u_char oid_prn[6] = {0x2b,6,1,2,1,43};
if(snmp->command == TAG_GETNEXT)
GetNextOID(vartemp);
//0x2b,6,1,4,1
if(memcmp(vartemp->oid,oid_start,8) == 0)//1.3.6.1.4.1.5334.100
{
flag = STARTGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_sys,6) == 0)//1.3.6.1.2.1.1
{
flag = SystemGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_if,6) == 0)//1.3.6.1.2.1.2
{
flag = InterfaceGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_ip,6) == 0)//1.3.6.1.2.1.4
{
flag = IPGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_icmp,6) == 0)//1.3.6.1.2.1.5
{
flag = IcmpGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_tcp,6) == 0)//1.3.6.1.2.1.6
{
flag = TcpGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_udp,6) == 0)//1.3.6.1.2.1.7
{
flag = UdpGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_snmp,6) == 0)//1.3.6.1.2.1.11
{
flag = SnmpGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_hr,6) == 0)//1.3.6.1.2.1.25
{
flag = HRGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_prn,6) == 0)//1.3.6.1.2.1.4
{
flag = PrinterGetVar(vartemp);
}
else if(memcmp(vartemp->oid,oid_hp,7) == 0)//1.3.6.1.4.1.12.2
{
flag = HPGetVar(vartemp);
}
else
{
flag = ERROR;
}
if (OK != flag)
{
vartemp->value_len = 0;
vartemp->type = TAG_OCTET;
snmp->errstat = PDU_NOSUCHNAME;
snmp->errindex = 1;
return OK;
}
return flag;
}
int SetOidValue(SNMP_PDU *snmp,VARLIST *vartemp)
{
u_char flag = OK;
long tempoid;
static u_char oid_start[8] = {0x2b,6,1,4,1,0xa9,0x56,0x64};
static u_char oid_hp[7] = {0x2b,6,1,4,1,0xb,2};
static u_char oid_sys[6] = {0x2b,6,1,2,1,1};
static u_char oid_if[6] = {0x2b,6,1,2,1,2};
static u_char oid_ip[6] = {0x2b,6,1,2,1,4};
static u_char oid_icmp[6] = {0x2b,6,1,2,1,5};
static u_char oid_tcp[6] = {0x2b,6,1,2,1,6};
static u_char oid_udp[6] = {0x2b,6,1,2,1,7};
static u_char oid_snmp[6] = {0x2b,6,1,2,1,11};
static u_char oid_hr[6] = {0x2b,6,1,2,1,25};
static u_char oid_prn[6] = {0x2b,6,1,2,1,43};
if (memcmp(vartemp->oid, oid_sys, 6) == 0)//1.3.6.1.2.1.1
{
flag = SystemSetVar(vartemp);
}
else if (memcmp(vartemp->oid, oid_start, 8) == 0)//1.3.6,1,4,1,0xa9,0x56,0x64
{
flag = STARTSetVar(vartemp);
}
else
{
flag = PDU_NOSUCHNAME;
}
if (flag != PDU_NOERROR)
{
snmp->errstat = flag;
snmp->errindex = 1;
}
return flag;
}
int GetNextOID(VARLIST *vartemp)
{
static u_char oid_sys[8] = {0x2b,6,1,2,1,1,1,0};//sysMIB第一个节点
static u_char oid_if[8] = {0x2b,6,1,2,1,2,1,0};//ifMIB第一个节点
static u_char oid_ip[8] = {0x2b,6,1,2,1,4,1,0};//ipMIB第一个节点
static u_char oid_icmp[8] = {0x2b,6,1,2,1,5,1,0};//icmpMIB第一个节点
static u_char oid_tcp[8] = {0x2b,6,1,2,1,6,1,0};
static u_char oid_udp[8] = {0x2b,6,1,2,1,7,1,0};
static u_char oid_snmp[8] = {0x2b,6,1,2,1,11,1,0};
static u_char oid_hr[11] = {0x2b,6,1,2,1,25,3,2,1,1,0};
static u_char oid_prt[11] = {0x2b,6,1,2,1,43,5,1,1,1,0};
static u_char oid_start[11]= {0x2b,6,1,4,1,0xa9,0x56,0x64,1,1,0};
if(memcmp(vartemp->oid,oid_sys,6) == 0)//sys MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 7)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
memcpy(vartemp->oid,oid_if,8);
vartemp->oid_len = 8;
return OK;
}//结束System MIB的遍历查找
else if(memcmp(vartemp->oid,oid_if,6) == 0)//if MIB
{
if(vartemp->oid[6] == 1)
{
vartemp->oid[6] = 2;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
else if(vartemp->oid[6] == 2 && vartemp->oid[7] == 1)
{
if(vartemp->oid[8] >0 && vartemp->oid[8]<22 )
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
}
memcpy(vartemp->oid,oid_ip,8);
vartemp->oid_len = 8;
return OK;
}//结束InterFace MIB的遍历查找
else if(memcmp(vartemp->oid,oid_ip,6) == 0)//ip MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 19)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
else if(vartemp->oid[6] == 19)
{
vartemp->oid[6] = 20;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
else if(vartemp->oid[6] == 20)
{
if(vartemp->oid[7] == 1)
{
if(vartemp->oid[8] > 0 && vartemp->oid[8] < 5)
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
vartemp->oid[6] = 21;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
}//结束ipAddrTable
else if(vartemp->oid[6] == 21)
{
if(vartemp->oid[7] == 1)
{
if(vartemp->oid[8] > 0 && vartemp->oid[8] < 13)
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
vartemp->oid[6] = 22;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
}//结束ipRouteTable
else if(vartemp->oid[6] == 22)
{
if(vartemp->oid[7] == 1)
{
if(vartemp->oid[8] > 0 && vartemp->oid[8] < 4)
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
vartemp->oid[6] = 23;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
}//结束ipNetToMediaTable
memcpy(vartemp->oid,oid_icmp,8);
vartemp->oid_len = 8;
return OK;
}
//结束IP MIB 的遍历查找
//开始ICMP MIB的遍历查找
else if(memcmp(vartemp->oid,oid_icmp,6) == 0)//icmp MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 26)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
memcpy(vartemp->oid,oid_tcp,8);
vartemp->oid_len = 8;
return OK;
}
//结束ICMP MIB的遍历查找
//开始TCP MIB 的遍历查找
else if(memcmp(vartemp->oid,oid_tcp,6) == 0)//tcp MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 12)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
else if(vartemp->oid[6] == 12)
{
vartemp->oid[6] = 13;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
else if(vartemp->oid[6] == 13)
{
if(vartemp->oid[7] == 1)
{
if(vartemp->oid[8] > 0 && vartemp->oid[8] < 5)
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
vartemp->oid[6] = 14;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
}//结束TcpConnTable
else if(vartemp->oid[6] == 14)
{
vartemp->oid[6] = 15;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
memcpy(vartemp->oid,oid_udp,8);
vartemp->oid_len = 8;
return OK;
}
//结束TCP MIB的遍历查找
//开始UDP MIB的遍历查找
else if(memcmp(vartemp->oid,oid_udp,6) == 0)//udp MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 4)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
return OK;
}
else if(vartemp->oid[6] == 4)
{
vartemp->oid[6] = 5;
vartemp->oid[7] = 1;
vartemp->oid[8] = 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
else if(vartemp->oid[6] == 5)
{
if(vartemp->oid[7] == 1)
{
if(vartemp->oid[8] > 0 && vartemp->oid[8] < 2)
{
vartemp->oid[8] += 1;
vartemp->oid[9] = 0;
vartemp->oid_len = 10;
return OK;
}
}
}//结束udpTable
memcpy(vartemp->oid,oid_snmp,8);
vartemp->oid_len = 8;
return OK;
}//结束UDP MIB的遍历查找
//开始SNMP MIB的遍历查找
else if(memcmp(vartemp->oid,oid_snmp,6) == 0)//snmp MIB
{
if(vartemp->oid[6] > 0 && vartemp->oid[6] < 30)
{
vartemp->oid[6] += 1;
vartemp->oid[7] = 0;
vartemp->oid_len = 8;
if(vartemp->oid[6] == 7)
vartemp->oid[6] = 8;
if(vartemp->oid[6] == 23)
vartemp->oid[6] = 24;
return OK;
}
memcpy(vartemp->oid,oid_start,11);
vartemp->oid_len = 11;
return OK;
}//结束SNMP MIB的遍历查找
//开始START MIB的遍历查找
else if(memcmp(vartemp->oid,oid_start,8) == 0)
{
if(vartemp->oid[8] == 1)
{
if(vartemp->oid[9] > 0 && vartemp->oid[9] < 5)
{
vartemp->oid[9] += 1;
vartemp->oid[10] = 0;
vartemp->oid_len = 11;
return OK;
}
vartemp->oid[8] = 2;
vartemp->oid[9] = 1;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[8] == 2)
{
if(vartemp->oid[9] == 1)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 8)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 2;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 2)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 5)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 3;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 3)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 10)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[8] = 3;
vartemp->oid[9] = 1;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
}
else if(vartemp->oid[8] == 3)
{
if(vartemp->oid[9] == 1)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 7)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 2;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 2)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 5)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 3;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 3)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 4)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 4;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 4)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 4)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
vartemp->oid[9] = 5;
vartemp->oid[10] = 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
else if(vartemp->oid[9] == 5)
{
if(vartemp->oid[10] > 0 && vartemp->oid[10] < 4)
{
vartemp->oid[10] += 1;
vartemp->oid[11] = 0;
vartemp->oid_len = 12;
return OK;
}
}
}
memcpy(vartemp->oid,oid_sys,8);
vartemp->oid_len = 8;
return OK;
}//结束START MIB的遍历查找
memcpy(vartemp->oid,oid_sys,8);
vartemp->oid_len = 8;
return OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -