Systemwalker Centric Manager APIガイド - UNIX共通 -
目次 索引 前ページ次ページ

上へ第3章 APIリファレンス

3.44 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が2Kbyteを超えました。
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 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-2003