EN JA
GENSNMPTREE(1)
GENSNMPTREE(1) FreeBSD General Commands Manual GENSNMPTREE(1)

名称

gensnmptreeMIB 記述ファイルから C とヘッダファイルを生成する

書式

gensnmptree [ -dEehlt][ -I directory][ -i infile][ -p prefix][ name ...]

解説

gensnmptree ユーティリティは、MIB 記述から C 言語テーブルとヘッダファイルまたは MIB 記述から数値 OID を生成するために使用されます。最初の形式は bsnmpd(1) デーモンを保守するためか、モジュールライタ (作者) のために使用されます。 2 番目の形式は SNMP クライアントプログラムライタ (作者) によって使用されるかもしれません。

オプション -e, -E または -t が何も使用されていないなら、 gensnmptree は、標準入力から MIB 記述を読み込んで、2 つのファイルを作成します: C ファイル prefixtree.c は PDU 処理の間に bsnmpd(1) によって使用されるテーブルを含み、ヘッダファイル prefixtree.h はこのテーブル、テーブル自体とすべての enum のための定義で使用されるコールバック関数の適切な宣言を含んでいます。

次のオプションが利用可能です:

-d
デバッグをオンに切り替えます。
-E
列挙とビット構成を抽出します。このモードでは、ツールは、コマンド行で与えられた各タイプのために値を文字列にマップするために使用される、C-enum 定義とプリプロセッサ定義を含むヘッダファイルを出力します。
-e
gensnmptree は、コマンド行で (最後のコンポーネントのみ) MIB 変数名を要求します。標準の入力から MIB 仕様を読み込み、それぞれの MIB 変数名のために標準出力に 2 つの C プリプロセッサ定義を出力します:
OIDX_ name
この定義は、次の方法で struct asn_oid を初期化するために使用することができます:

const struct asn_oid oid_sysDescr = OIDX_sysDescr;
OIDLEN_ name
は OID の長さです。
OID_ name
は OID の最後のコンポーネントです。
-h
短いヘルプページを印刷 (表示) します。
-I directory
標準のインクルードディレクトリのすぐ前のインクルードパスに指定されたディレクトリを追加します。
-i infile
標準入力の代わりに指定されたファイルから読み込みます。
-l
ローカルプリプロセッサのインクルードを生成します。これは、 bsnmpd(1) のブートストラップで使用されます。
-t
通常の出力の代わりに、結果のツリーを印刷 (表示) します。
-p prefix
prefix をファイル名とテーブル名の前に付けます。

MIB

MIB 記述ファイルの構文は次のような正式な仕様に定められます:

 file := top | top file 
 
 top := tree | typedef | include 
 
 tree := head elements ')' 
 
 entry := head ':' index STRING elements ')' 
 
 leaf := head type STRING ACCESS ')' 
 
 column := head type ACCESS ')' 
 
 type := BASETYPE | BASETYPE '|' subtype | enum | bits 
 
 subtype := STRING 
 
 enum := ENUM '(' value ')' 
 
 bits := BITS '(' value ')' 
 
 value := INT STRING | INT STRING value 
 
 head := '(' INT STRING 
 
 elements := EMPTY | elements element 
 
 element := tree | leaf | column 
 
 index := type | index type 
 
 typedef := 'typedef' STRING type 
 
 include := 'include' filespec 
 
 filespec := '"' STRING '"' | '<' STRING '>'

BASETYPE は SNMP データタイプを指定して、それは次のうちの 1 つです。

  • NULL
  • INTEGER
  • INTEGER32 (INTEGER と同じ)
  • UNSIGNED32 (GAUGE と同じ)
  • OCTETSTRING
  • IPADDRESS
  • OID
  • TIMETICKS
  • COUNTER
  • GAUGE
  • COUNTER64

ACCESS は MIB 変数のアクセシビリティ (その操作を実行することができる) を指定して、それは次のうちの 1 つです。

  • GET
  • SET

INT は 10 進の整数で、 STRING は文字か下線で始まり、文字、数値、下線とマイナス記号から成る任意の文字列で、キーワードの 1 つでないものです。

typedef 指示はタイプを単一の名前に関連づけます。

include 指示は、指定されたファイルの内容と置き換えられます。

使用例

次の MIB 記述はシステムグループについて説明しています:

include "tc.def" 
 
typedef AdminStatus ENUM ( 
 1 up 
 2 down 
) 
 
(1 internet 
  (2 mgmt 
    (1 mibII 
      (1 system 
        (1 sysDescr OCTETSTRING op_system_group GET) 
        (2 sysObjectId OID op_system_group GET) 
        (3 sysUpTime TIMETICKS op_system_group GET) 
        (4 sysContact OCTETSTRING op_system_group GET SET) 
        (5 sysName OCTETSTRING op_system_group GET SET) 
        (6 sysLocation OCTETSTRING op_system_group GET SET) 
        (7 sysServices INTEGER op_system_group GET) 
        (8 sysORLastChange TIMETICKS op_system_group GET) 
        (9 sysORTable 
          (1 sysOREntry : INTEGER op_or_table 
            (1 sysORIndex INTEGER) 
            (2 sysORID OID GET) 
            (3 sysORDescr OCTETSTRING GET) 
            (4 sysORUpTime TIMETICKS GET) 
        )) 
      ) 
    ) 
  ) 
)

関連項目

bsnmpd(1)

作者

Hartmut Brandt <harti@FreeBSD.org>
May 26, 2006 FreeBSD