linux系统中,手动为snmp中的mib.c文件添加一个新的标量节点(自己在代码中添加一个节点,而不是通过mib文件生成节点)。

1.首先需要添加的是下面的idbObjDesc_t 结构:

LOCAL idbObjDesc_t xxxNodeVersion_objDesc[] = {

    {xxxNodeVersion,1,4,/*localId=0 1.3.6.1.2.1.68.1.1*/

    {0,0},IDB_INTEGER,IDB_READ,

    (IDB_VALID),xxxMibScalarHandler,

    (char *)0,"xxxMib:xxxNodeVersion"},

    {0}

}

(1),上面加粗的三个地方“xxxNodeVersion_objDesc”,“xxxNodeVersion”,“xxxMib:xxxNodeVersion”,这三个地方都是和名字相关的,需要修改,就是修改为你想添加的节点的名称,例如:sysName,sysLocal这些节点的名称,但是修改的时候记得要和原先的结构保持一致不要破坏之前的结构。

(2).上面标红的两个地方要保持一致,即xxxNodeVersion后面的“x”必须是你添加的节点的最后一个数值,另外要注意新添加的节点一定不要和原有的节点冲突,所以要仔细检查之前的节点,确认之前的节点是从x.x.x.x.x.x.x ----- x.x.x.x.y.y.y.y,然后新的节点添加为x.x.x.x.y.y.y.y+ 1,这样才能添加成功。

(3).上面加下划线的两个地方:“IDB_INTEGER”,“IDB_READ”,第一个是表示的是数据交互类型,这个类型在mib中有很多,这里就不说了,可以从其他的结构中看到这些类型,复制那些结构中的类型修改我们添加的节点的类型就行。第二个是表示的节点是可读可写性,这个同样是模仿其他节点来修改我们的结构。

(4).上面标紫色的地方是节点信息处理函数,这个函数最好使用之前原本就有的函数,我们在其中添加新的节点即可,不用重新写函数,不然会很复杂;当然这个函数必须是标量处理函数。

2.修改下面的idbOidTable_t结构:

LOCAL idbOidTable_t oidTable[] = {

    {IDB_SNMP_STRUCT,{1,3,6,1,2,1,68,1},9,

    0,1,{0},

   xxxNodeVersion_objDesc },

   ...

   ...

   ...

   在这里添加新的节点,必须在这里添加。

   {IDB_TERMINATOR}

}

在上述结构中其实是把我们第一步创建的结构又进行了封装,并且带了其他的信息我们只需要按照原先的内容复制一份,添加到上述红色字体的位置就行,然后进行修改,修改内容包括:1,3,6,1,2,1,68,1,这是节点的索引所以需要修改为我们添加的节点索引;

xxxNodeVersion_objDesc ”这个要修改为和我们在第一步中添加的结构的名称一样的名字。

3.修改下面的结构idbXlateTable_t:

LOCAL idbXlateTable_t xlateTable[] = {

    {&oidTable[ 0],&xxxNodeVersion_objDesc[0]},

    ...

    ...

    ...

    添加新的结构一定要添加在这里

    {0}

}

上述添加新的结构的时候需要注意的是:oidTable后面的数组的索引,要修改成xlateTable这个结构中的所有元素的最后一个,比如添加的新的节点位置的前一个所以的9,那么我们添加新的就是10.

4.修改节点处理函数:

case xxxNodeVersion:

{

    switch(requset)

    {

        case IDB_GET_NEXT:

        case IDB_GET:

            break;

        case IDB_VALIDATE:

        case IDB_SET_NVM:

        case IDB_COMMIT:  

            break;  

    }

    break;

}

上述修改中,在IDB_GET属性下面修改get数据时候的操作,一定要注意处理数据的时候使用的向前端推送的int和字符串或者ip等格式的数据采用的推送函数是不一样的,不要使用错误。IDB_COMMIT后面添加set数据时候的操作。xxxNodeVersion这个定义可以添加到和其他的mib节点相同的地方。

到此为止新的节点添加完成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章