見出し画像

TWSNMP FCで拡張MIBに対応した

今朝は3時半から開発開始です。昨日みつけた拡張MIBの読み込み処理のバグが気になって早く起きました。
まずは、問題の切り分けのために

を元にしたテストプログラムで動作を確認しました。
問題の

のMIBの

jema                    OBJECT IDENTIFIER ::=  { enterprises 4550 }

   jemaUpsMIB MODULE-IDENTITY
       LAST-UPDATED "200102070000Z"
       ORGANIZATION "JEMA UPS MIB Working Group"
       CONTACT-INFO
              "        Hiroshi Inoue

                Postal: The Japan Electrical Manufacturers' Association
                        JAPAN

                   Tel: +81-3-3556-5884
                   Fax: +81-3-3556-5892

                E-mail: hiroshi_inoue1@jema-net.or.jp"
       DESCRIPTION
               "The MIB module to describe Uninterruptible Power
               Systems."
       ::= { jema 1 }

をテストプログラムで読み込むと名前に対するOIDが

jemaUpsMIB = enterprises.4550.1

のようになっていることがわかりました。本当は、

jemaUpsMIB = .1.3.6.1.4.1.4550.1

こうなるのが正解です。数値のOIDに名前(enterprises)が入っているのが
問題でした。そこで、数値のOIDに名前(enterprises)が入っている場合は数値に変換する処理をいれて解決しました。

この修正をしている時に、このまま処理では問題があることを思い出しました。一般的に配布されているMIBファイルには

jema                    OBJECT IDENTIFIER ::=  { enterprises 4550 }

の部分と

   jemaUpsMIB MODULE-IDENTITY
       LAST-UPDATED "200102070000Z"
       ORGANIZATION "JEMA UPS MIB Working Group"
       CONTACT-INFO
              "        Hiroshi Inoue

                Postal: The Japan Electrical Manufacturers' Association
                        JAPAN

                   Tel: +81-3-3556-5884
                   Fax: +81-3-3556-5892

                E-mail: hiroshi_inoue1@jema-net.or.jp"
       DESCRIPTION
               "The MIB module to describe Uninterruptible Power
               Systems."
       ::= { jema 1 }

が別のファイルに分割されているケースがあります。最初の方はSMIの定義ファイルとして配布されれています。MIBのツリー構造の上の方を定義しています。TWSNMP FCの拡張MIBの読み込みで最初に上位のファイルを読み込んでいれば問題ないですが、先に下位のファイルを読み込みとOIDの数値がわからない状態になります。上の例では、jemaの定義です。
オリジナルのTWSNMPではGUIから読み込んだので順番を気にすれば問題を回避できました。TWSNMP FCも同じ方法で解決でもよいのですが、
このあたりはもう少し頭を使って解決することにしました。
とりあえず、拡張MIBを読み込んだ時に名前が未定義のものがあるファイルは、もう一度読み込むことにしました。
これでうまくいきました。2階層までしか対応していませんが、3階層以上の場合は、ファイルを編集して対策してください。
久しぶりにプログラミングぽい開発だったので楽しかったです。
今朝の開発は、

です。

 明日に続く


開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。