Systemwalker Centric Manager APIガイド - UNIX共通 -
|
目次
索引

|
3.49 NWsnmpPduEncode()関数
■機能説明
NWsnmp_pdu構造体をPDUに変換します。
■呼び出し形式
int NWsnmpPduEncode(NWsnmp_pdu* tsp, char** pdu, int* len, NWsnmpErrinfo *infoErr)
■パラメタ
入力パラメタ
- tsp:
- NWsnmp_pdu構造体を指定します。
出力パラメタ
- pdu:
- 作成PDUを指定します(領域は関数内で確保されます)。
- len:
- 作成PDU長を指定します。
- infoErr:
- エラー情報設定構造体を指定します。
■復帰値
- 1:
- 正常終了。
- 0:
- 異常終了。
備考
エラー時に、以下のコードがNWsnmpErrinfo構造体のNWErrorCodeに設定されます。
- NWSNMP_TOO_BIG:
- 作成PDUが2KBを超えました。
- NWSNMP_MALLOC_ERR:
- 領域の獲得に失敗しました。
- NWSNMP_OBJECT_INVALID:
- 指定MIB名が存在しませんでした。
- NWSNMP_PARAMETER_ERR:
- 不当パラメタが指定されました。
- NWSNMP_BAD_MIB:
- MIB名が2048文字を超えました。
- NWSNMP_BAD_DATA:
- PDU形式に変換できないNWsnmp_pdu構造体が指定されました。
■注意事項
- PDUタイプがGET/GETNEXT/SET REQUESTとTRAPの符号化が可能です。
- PDU領域は関数内で取得されます。
使用後はNWsnmpFree()関数を用いて領域の解放を行ってください。
■使用例
GetRequestPDU、およびGetNextRequestPDUの作成例
NWsnmp_pdu tsp; /* 復号化するNWsnmp_pdu構造体 */
NWsnmp_Varbind varbind1; /* NWsnmp_Varbind構造体 */
NWsnmp_Varbind varbind2; /* NWsnmp_Varbind構造体 */
char *pdu; /* 生成するPDU */
int len; /* 生成するPDU長 */
NWsnmpErrinfo infoErr /* エラー通知構造体 */
−中略−
memset(&tsp, '\0' , sizeof(tsp));
memset(&varbind1, '\0' , sizeof(varbind1));
memset(&varbind2, '\0' , sizeof(varbind2));
tsp.version = NWSNMP_VERSION_1; /* バージョンの設定 */
tsp.community = "public"; /* コミュニティ名の設定 */
tsp.community_len = strlen("public"); /* コミュニティ名長の設定*/
tsp,pdu_type = NWSNMP_GET; /* 種別の設定、GetNextRequestの場合、*/
/* NWSNMP_NEXTを設定 */
tsp.request_id = 12345; /* リクエストIDの設定 */
/*
* NWsnmp_Varbind構造体の設定
*/
tsp.varbind = &varbind1;
/* varbindリスト1 */
varbind1.obj_name = "sysName.0";
varbind1.obj_type = NWSNMP_NULL;
varbind1.next = &varbind2;
/* varbindリスト2 */
varbind1.obj_name = "1.3.6.1.2.1.1.6.0";
varbind1.obj_type = NWSNMP_NULL;
varbind1.next = NULL;
/* NWsnmp_pduの復号化 */
if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) {
/* エラー処理 */
}
SetRequestPDUの作成例
NWsnmp_pdu tsp; /* 復号化するNWsnmp_pdu構造体 */
NWsnmp_Varbind varbind1; /* NWsnmp_Varbind構造体 */
char *pdu; /* 生成するPDU */
int len; /* 生成するPDU長 */
NWsnmpErrinfo infoErr /* エラー通知構造体 */
−中略−
memset(&tsp, '\0' , sizeof(tsp));
memset(&varbind, '\0' , sizeof(varbind));
tsp.version = NWSNMP_VERSION_1; /* バージョンの設定 */
tsp.community = "public"; /* コミュニティ名の設定 */
tsp.community_len = strlen("public"); /* コミュニティ名長の設定*/
tsp.pdu_type = NWSNMP_SET; /* 種別の設定 */
tsp.request_id = 12345; /* リクエストIDの設定 */
/*
* NWsnmp_Varbind構造体の設定
*/
tsp.varbind = &varbind1;
/* varbindリスト */
varbind.obj_name = "sysLocation.0";
varbind.obj_type = NWSNMP_OCTET_STRING;
varbind.obj_syntax.val_octet_string.string = "PFU";
varbind.obj_syntax.val_octet_string.len =strlen("PFU");
varbind.next = NULL;
/* NWsnmp_pduの符号化 */
if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) {
/* エラー処理 */
}
TrapPDUの作成例
NWsnmp_pdu tsp; /* 復号化するNWsnmp_pdu構造体 */
NWsnmp_Varbind varbind1; /* NWsnmp_Varbind構造体 */
char *pdu; /* 生成するPDU */
int len; /* 生成するPDU長 */
NWsnmpErrinfo infoErr /* エラー通知構造体 */
unsigned long agent ; /* エージェントアドレス */
−中略−
memset(&tsp, '\0' , sizeof(tsp));
memset(&varbind, '\0' , sizeof(varbind));
tsp.version = NWSNMP_VERSION_1; /* バージョンの設定 */
tsp.community = "public"; /* コミュニティ名の設定 */
tsp.community_len = strlen("public"); /* コミュニティ名長の設定 */
tsp.pdu_type = NWSNMP_TRAP; /* 種別の設定 */
tsp.enterprise = "1.3.6.1.4.1."; /* enterpriseの設定 */
tsp.agent_addr = agent; /* エージェントアドレスの設定 */
tso.generic_trap = NWSNMP_COLDSTART; /* TRAP種別の設定 */
tso.specific_trap = 0; /* specificCodeの設定 */
tsp.time_stamp = 0; /* タイムスタンプの設定 */
/*
* NWsnmp_Varbind構造体の設定
*/
tsp.varbind = &varbind1;
/* varbindリスト */
varbind.obj_name = "sysName.0";
varbind.obj_type = NWSNMP_OCTET_STRING;
varbind.obj_syntax.val_octet_string.string = "HostName";
varbind.obj_syntax.val_octet_string.len =strlen("HostName");
varbind.next = NULL;
/* NWsnmp_pduの符号化 */
if (!NWsnmpPduEncode(&tsp, &pdu, &len, &infoErr)) {
/* エラー処理 */
}
All Rights Reserved, Copyright(C) 富士通株式会社 1995-2005