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節點相同的地方。

到此爲止新的節點添加完成。

 

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