An example for a private MIB is part of the "minimal Unix" project:
contrib/ports/unix/proj/minimal/lwip_prvmib.c
附件是unix项目中的提供的模板代码,做相应的修改,此处表的数据时在系统启动的时候初始化的,有一定的局限性,当表的数据未知时,我怎们能随时插入表的行数呢?
void lwip_privmib_init(void)
{
int index=0 ,i;
struct mib_list_node *dummy;
struct mib_list_rootnode *iprte_rn;
for(i=0;i<3;i++) //对表增加3行数据
{
iprte_rn=&sensor_addr_inf.sensor_list_rn;
dummy=NULL;
snmp_mib_node_insert(iprte_rn,i,&dummy);
}
if (sensor_addr_inf.sensor_list_rn.count != 0)
{
/* enable sensor table, 2 tree_levels under this node
one for the registers and one for the index */
sensorentry.tree_levels = 2;
}
}
在下面这个函数中将表的对象数返回值进行修改就可实现:
static u16_t
sensorentry_length(void* addr_inf, u8_t level)
{
struct sensor_inf* sensors = addr_inf;
if (level == 0)
{
/* one object (temperature) */
/*表中有2个节点,返回2,当表中有3个节点时,我改为return 3,getnextrequest这个表,导致死机。但是我单独获取每 个节点时没有问题*/
return 2;
}
else if (level == 1)
{
/* number of sensor indexes */
/*表的数据行数*/
return sensors->sensor_list_rn.count;
}
else
{
return 0;
}
}
当表中含3个节点,如图:
D:\a\3.jpg
我单独get每个节点,即分别对节点sensorIndex,sensorName,sensorValue进行Get Colunm操作,可以获取相应的数据,
如图:
D:\a\4.jpg