ページの先頭行へ戻る
Systemwalker Centric Manager API・スクリプトガイド

4.54 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構造体が指定されました。

注意事項

使用例

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 varbind;  /* 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の作成例

【Windows版/UNIX版(Linux for Itanium版を除く)の場合】

NWsnmp_pdu     tsp;      /* 符号化するNWsnmp_pdu構造体  */
NWsnmp_Varbind varbind;  /* 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;               /* エージェントアドレスの設定 */
tsp.generic_trap = NWSNMP_COLDSTART;  /* SNMPトラップ種別の設定     */
tsp.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)) {
/* エラー処理 */
}

【Linux for Itanium版】

NWsnmp_pdu     tsp;      /* 符号化するNWsnmp_pdu構造体  */
NWsnmp_Varbind varbind;  /* NWsnmp_Varbind構造体        */
char           *pdu;     /* 生成するPDU                 */
int            len;     /* 生成するPDU長               */
NWsnmpErrinfo  infoErr;  /* エラー通知構造体            */
NWSNMP_ULONG 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;               /* エージェントアドレスの設定 */
tsp.generic_trap = NWSNMP_COLDSTART;  /* SNMPトラップ種別の設定     */
tsp.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)) {
/* エラー処理 */
}