ネットワーク管理のAPIで使用する共通パラメタについて説明します。
NWsnmp_pdu構造体
機能
SNMPのデータ設定、または受信時に使用する構造体です。
構造体
【Windows版/UNIX版(Linux for Itanium版を除く)の場合】
typedef struct { int version; #define NWSNMP_VERSION_1 0 char *community; int community_len; int pdu_type; #define NWSNMP_GET 0 #define NWSNMP_GET_NEXT 1 #define NWSNMP_RESPONSE 2 #define NWSNMP_SET 3 #define NWSNMP_TRAP 4 int request_id; int error_status; #define NWSNMP_NOERROR 0 #define NWSNMP_TOOBIG 1 #define NWSNMP_NOSUCHNAME 2 #define NWSNMP_BADVALUE 3 #define NWSNMP_READONLY 4 #define NWSNMP_GENERR 5 int error_index; char *enterprise; unsigned long agent_addr; int generic_trap; #define NWSNMP_COLDSTART 0 #define NWSNMP_WARMSTART 1 #define NWSNMP_LINKDOWN 2 #define NWSNMP_LINKUP 3 #define NWSNMP_AUTHENTICATIONFAILURE 4 #define NWSNMP_EGPNEIGHBORLOSS 5 #define NWSNMP_ENTERPRISESPECIFIC 6 int specific_trap; int time_stamp; NWsnmp_Varbind *var_bind; } NWsnmp_pdu;
【Linux for Itanium版】
typedef struct { int version; #define NWSNMP_VERSION_1 0 char *community; int community_len; int pdu_type; #define NWSNMP_GET 0 #define NWSNMP_GET_NEXT 1 #define NWSNMP_RESPONSE 2 #define NWSNMP_SET 3 #define NWSNMP_TRAP 4 int request_id; int error_status; #define NWSNMP_NOERROR 0 #define NWSNMP_TOOBIG 1 #define NWSNMP_NOSUCHNAME 2 #define NWSNMP_BADVALUE 3 #define NWSNMP_READONLY 4 #define NWSNMP_GENERR 5 int error_index; char *enterprise; NWSNMP_ULONG agent_addr; int generic_trap; #define NWSNMP_COLDSTART 0 #define NWSNMP_WARMSTART 1 #define NWSNMP_LINKDOWN 2 #define NWSNMP_LINKUP 3 #define NWSNMP_AUTHENTICATIONFAILURE 4 #define NWSNMP_EGPNEIGHBORLOSS 5 #define NWSNMP_ENTERPRISESPECIFIC 6 int specific_trap; int time_stamp; NWsnmp_Varbind *var_bind; } NWsnmp_pdu;
メンバ
各PDUタイプの符号化時に設定するメンバを以下に示します。
メンバ名 | GET | GET | SET | TRAP | 備考 |
---|---|---|---|---|---|
version | ○ | ○ | ○ | ○ | 0だけ設定可 |
community | ○ | ○ | ○ | ○ | NULLは設定不可 |
community_len | ○ | ○ | ○ | ○ | 1以上だけ設定可 |
pdu_type | ○ | ○ | ○ | ○ | 0、1、3、4だけ設定可 |
request_id | ○ | ○ | ○ | × | PDUの識別に使用 |
error_status | × | × | × | × | 符号化時に0を設定 |
error_index | × | × | × | × | 符号化時に0を設定 |
enterprise | × | × | × | ○ | エージェントのsysObjectIDを設定 |
agent_addr | × | × | × | ○ | 32ビットのhostid/netidを設定 |
generic_trap | × | × | × | ○ | 0~6だけ設定可 |
specific_trap | × | × | × | ○ | generic_trapが6のときに設定 |
var_bind | ○ | ○ | ○ | △ | 省略時はNULLを設定 |
○:設定必須
×:省略不可
△:省略可
設定
各項目の設定を以下に示します。
SNMPプロトコルバージョンを設定します。
現在は、SNMPv1以外はサポートしていません。
コミュニティ名を設定します。
コミュニティ名の長さを設定します。
PDUタイプを以下より選択します。
#define NWSNMP_GET 0 #define NWSNMP_GET_NEXT 1 #define NWSNMP_RESPONSE 2 #define NWSNMP_SET 3 #define NWSNMP_TRAP 4
リクエストIDを設定します。
SNMPトラップ送信時には意味を持ちません。
送信時には意味を持ちません。
受信時には、以下のどれかのエラー情報が通知されます。
#define NWSNMP_NOERROR 0 #define NWSNMP_TOOBIG 1 #define NWSNMP_NOSUCHNAME 2 #define NWSNMP_BADVALUE 3 #define NWSNMP_READONLY 4 #define NWSNMP_GENERR 5
送信時には意味を持ちません。
受信時には、エラーインデックスが設定されます。
SNMPトラップのenterprise値を設定します。
enterpriseに使用されるsysObjectIDが、MIBファイルに定義されている場合、MIB名を指定できます。
未定義の場合には、ドット形式で指定してください。
SNMPトラップのエージェントアドレス(32ビットhostid/netid)を設定します。
SNMPトラップの種類を以下から選択します。
#define NWSNMP_COLDSTART 0 #define NWSNMP_WARMSTART 1 #define NWSNMP_LINKDOWN 2 #define NWSNMP_LINKUP 3 #define NWSNMP_AUTHENTICATIONFAILURE 4 #define NWSNMP_EGPNEIGHBORLOSS 5 #define NWSNMP_ENTERPRISESPECIFIC 6
SNMPトラップの種別(generic_trap)が、NWSNMP_ENTERPRISESPECIFICの場合に、specific_trapを設定します。
それ以外のSNMPトラップ時には、0(ゼロ)を設定します。
SNMPトラップを生成したエージェントのsysUpTime値を設定します。
Varbindを設定します。
詳細については、以下を参照してください。
省略して符号化を行う場合には、NULLを設定してください。
NWsnmp_Varbind構造体
機能
GET/GET-NEXT/SETオペレーションの受信と、それに対応する応答に使用します。また、SNMPトラップを送信する場合にも使用します。
構造体
【Windows版/UNIX版(Linux for Itanium版は除く)の場合】
typedef struct _old { char *string; int len; } NWsnmp_oid; typedef union _nwsnmp_var_val { NWSNMP_LONG val_integer; NWsnmp_oid val_octet_string; char *val_object_identidier; unsigned long val_ip_addr; unsigned long val_counter; unsigned long val_gauge; unsigned long val_timeticks; NWsnmp_oid val_opaque; } NWsnmp_var_val; typedef struct _nwsnmp_varbind { char *obj_name; int obj_type; #define NWSNMP_INTEGER 1 #define NWSNMP_OCTET_STRING 2 #define NWSNMP_OBJECT_IDENTIFIER 3 #define NWSNMP_NULL 4 #define NWSNMP_IPADDRESS 5 #define NWSNMP_COUNTER 6 #define NWSNMP_GAUGE 7 #define NWSNMP_TIMETICKS 8 #define NWSNMP_OPAQUE 9 NWsnmp_var_val obj_syntax; struct _nwsnmp_varbind *next; } NWsnmp_Varbind;
【Linux for Itanium版】
typedef struct _old { char *string; int len; } NWsnmp_oid; typedef union _nwsnmp_var_val { NWSNMP_LONG val_integer; NWsnmp_oid val_octet_string; char *val_object_identidier; NWSNMP_ULONG val_ip_addr; NWSNMP_ULONG val_counter; NWSNMP_ULONG val_gauge; NWSNMP_ULONG val_timeticks; NWsnmp_oid val_opaque; } NWsnmp_var_val; typedef struct _nwsnmp_varbind { char *obj_name; int obj_type; #define NWSNMP_INTEGER 1 #define NWSNMP_OCTET_STRING 2 #define NWSNMP_OBJECT_IDENTIFIER 3 #define NWSNMP_NULL 4 #define NWSNMP_IPADDRESS 5 #define NWSNMP_COUNTER 6 #define NWSNMP_GAUGE 7 #define NWSNMP_TIMETICKS 8 #define NWSNMP_OPAQUE 9 NWsnmp_var_val obj_syntax; struct _nwsnmp_varbind *next; } NWsnmp_Varbind;
設定
各項目の設定を以下に示します。
操作対象のオブジェクト名を、MIB名またはドット形式で指定します。
オブジェクトのタイプを以下より指定します。
#define NWSNMP_INTEGER 1 #define NWSNMP_OCTET_STRING 2 #define NWSNMP_OBJECT_IDENTIFIER 3 #define NWSNMP_NULL 4 #define NWSNMP_IPADDRESS 5 #define NWSNMP_COUNTER 6 #define NWSNMP_GAUGE 7 #define NWSNMP_TIMETICKS 8 #define NWSNMP_OPAQUE 9
オブジェクトのシンタックスを指定します。
オブジェクトタイプに該当する、NWsnmp_var_val共用体のメンバに値を指定します。
複数のVarbindを設定する場合、次構造体のポインタを指定します。最後のVarbind構造体には、NULLを指定してください。
NWsnmpErrinfo構造体
機能
ネットワークAPIで発生したエラー情報を設定する構造体です。
構造体
【Windows版/UNIX版(Linux for Itanium版は除く)の場合】
typedef struct _nwsnmp_errinfo { int NWErrorCode; unsigned long NWErrorDetail; unsigned long NWErrorCause; } NWsnmpErrinfo;
【Linux for Itanium版】
typedef struct _nwsnmp_errinfo { int NWErrorCode; NWSNMP_ULONG NWErrorDetail; NWSNMP_ULONG NWErrorCause; } NWsnmpErrinfo;
設定
各項目の設定を以下に示します。
エラーコードが設定されます。
エラーの詳細コードが設定されます。
詳細コードが取得できないエラーについては、0が設定されます。
エラーの原因コードが設定されます。
備考
この情報から、エラーメッセージを標準エラーに出力するNWsnmpPerror()関数と、エラーメッセージを作成するNWsnmpSerror()関数を用意しています。