Man page - default_store(3)

Packages contains this manual

Available languages:

en ja

Manual

SNMP_AGENT_API

名 前
書 式
説 明
関 数
関 連 項 目

名 前

default_store - 大 域 デ ー タ の 一 般 的 な 格 納 場 所

書 式

#include <ucd-snmp/ucd-snmp-config.h>
#include <ucd-snmp/ucd-snmp-includes.h>

int ds_set_boolean(int storeid, int which, int value);
int ds_get_boolean(int storeid, int which);
int ds_set_int(int storeid, int which, int value);
int ds_get_int(int storeid, int which);
int ds_set_string(int storeid, int which, const char *value);
char *ds_get_string(int storeid, int which);
int ds_register_config(u_char type, const char *ftype, const char *token,
int storeid, int which);
int ds_register_premib(u_char type, const char *ftype, const char *token,
int storeid, int which);
void ds_shutdown(void);

説 明

デ フ ォ ル ト の デ ー タ 格 納 場 所 の 目 的 は 、 次 の 3 つ で あ る :

1)

大 域 的 に ア ク セ ス で き る 変 数 や も っ と 公 開 の 制 限 さ れ た 変 数 に ア ク セ ス す る 関 数 群 を 作 成 し た り せ ず に 、 大 域 的 な デ ー タ 格 納 場 所 を 作 成 す る 。

2)

ス レ ッ ド (thread) ロ ッ ク を 実 装 す る 必 要 が あ る 格 納 場 所 を 提 供 す る 。 し か し 、 こ れ を 書 い て い る 時 点 で は 、 ス レ ッ ド ロ ッ ク は ま だ 実 装 さ れ て い な い 。

3)

コ ー ド 間 の 相 互 依 存 性 の 数 を 減 ら す (コ ー ド は 最 終 的 に リ ン ク し て も し な く て も 良 い )。 問 題 と し て い る ア プ リ ケ ー シ ョ ン 内 で リ ン ク さ れ な い 、 別 々 の セ ク シ ョ ン の コ ー ド で 使 わ れ る 設 定 デ ー タ の よ う な デ ー タ の 格 納 場 所 を 提 供 す る 。

こ こ で 定 義 さ れ る 関 数 は 、 以 下 の 目 的 を (実 現 す る 機 能 を ) 実 装 し て い る 。

現 在 の と こ ろ 真 偽 値 (boolean)・ 整 数 値 (integer)・ 文 字 列 (string) と い う 3 つ の デ ー タ 型 が サ ポ ー ト さ れ て い る 。 各 デ ー タ 型 の デ ー タ は 、 別 々 の 格 納 場 所 に 分 け ら れ て い る 。 さ ら に 、 各 デ ー タ 型 の 格 納 場 所 は ア プ リ ケ ー シ ョ ン レ ベ ル で も 分 割 さ れ て い る 。 現 在 の と こ ろ 2 つ の 格 納 場 所 が あ る 。 1 つ 目 の 格 納 場 所 は 、 SNMP ラ イ ブ ラ リ 自 身 に よ っ て 予 約 さ れ て い る 。 2 つ 目 の 格 納 場 所 は 、 ア プ リ ケ ー シ ョ ン に よ っ て 使 わ れ る こ と を 意 図 し て お り 、 ラ イ ブ ラ リ に よ る 変 更 や チ ェ ッ ク が 行 わ れ な い の で 、 ユ ー ザ ー が 使 い や す い も の に な っ て い る 。

3 つ の 格 納 場 所 は 、 bool_storage[storeid][which], int_storage[storeid][which], string_storage[storeid][which] と い う 3 つ の 配 列 と 考 え る こ と が で き る 。 デ ー タ は 以 下 で 定 義 さ れ る 関 数 で ア ク セ ス で き る 。 格 納 し た い デ ー タ が あ る 場 合 は 、 DS_APPLICATION_ID と い う storeid を 使 え ば 良 い 。

ラ イ ブ ラ リ が 使 う 格 納 場 所 は 、 default_store.h で 定 義 さ れ て お り 、 現 在 の と こ ろ 以 下 の よ う に 定 義 さ れ て い る 。

/* 以 下 の 定 義 は API の "storeid" 引 き 数 と し て 使 わ れ る 。 */
#define DS_LIBRARY_ID 0
#define DS_APPLICATION_ID 1
#define DS_TOKEN_ID 2

/* storeid が DS_LIBRARY_ID の 場 合 、
以 下 の 定 義 は API の "which" 引 き 数 と し て 使 わ れ る 。 */
/* 真 偽 値 を 操 作 す る ラ イ ブ ラ リ で 使 わ れ る も の */
#define DS_LIB_MIB_ERRORS 0
#define DS_LIB_SAVE_MIB_DESCRS 1
#define DS_LIB_MIB_COMMENT_TERM 2
#define DS_LIB_MIB_PARSE_LABEL 3
#define DS_LIB_DUMP_PACKET 4
#define DS_LIB_LOG_TIMESTAMP 5
#define DS_LIB_DONT_READ_CONFIGS 6
#define DS_LIB_MIB_REPLACE 7 /* オ ブ ジ ェ ク ト を 最 新 の モ ジ ュ ー ル で 置 き 換 え る */
#define DS_LIB_PRINT_NUMERIC_ENUM 8 /* 数 値 の 列 挙 型 (enum) 値 の み を 表 示 す る */
#define DS_LIB_PRINT_NUMERIC_OIDS 9 /* 数 値 の oid の み を 表 示 す る */
#define DS_LIB_DONT_BREAKDOWN_OIDS 10 /* oid イ ン デ ッ ク ス を 特 に 表 示 し な い */
#define DS_LIB_ALARM_DONT_USE_SIG 11 /* alarm() シ グ ナ ル を 使 わ な い */
#define DS_LIB_PRINT_FULL_OID 12 /* 完 全 な oid を 表 示 す る */
#define DS_LIB_QUICK_PRINT 13 /* パ ー ス の 際 に 非 常 に 簡 単 な 出 力 を す る */

#define DS_LIB_RANDOM_ACCESS

14 /* oid ラ ベ ル に ラ ン ダ ム に ア ク セ ス す る */

#define DS_LIB_REGEX_ACCESS

15 /* oid ラ ベ ル に regex に よ る マ ッ チ ン グ を 行 う */

#define DS_LIB_DONT_CHECK_RANGE 16 /* send の 値 の 範 囲 の チ ェ ッ ク を 行 わ な い */
#define DS_LIB_NO_TOKEN_WARNINGS 17 /* config 関 数 の token が 不 明 な 場 合 で も 警 告 を 出 さ な い */
#define DS_LIB_NUMERIC_TIMETICKS 18 /* timeticks を 数 値 で 表 示 す る */
#define DS_LIB_ESCAPE_QUOTES 19 /* oid の 引 用 符 を シ ェ ル に エ ス ケ ー プ さ せ る */
#define DS_LIB_REVERSE_ENCODE 20 /* バ ッ ク か ら フ ロ ン ト へ の パ ケ ッ ト を エ ン コ ー ド す る */

#define DS_LIB_PRINT_BARE_VALUE

21 /* (OID = value で な い 場 合 の ) value だ け を 表 示 す る */

#define DS_LIB_EXTENDED_INDEX

22 /* [x1][x2] と い う 拡 張 形 式 で イ ン デ ッ ク ス を 表 示 す る */

/* 整 数 値 を 操 作 す る ラ イ ブ ラ リ で 使 わ れ る も の */
#define DS_LIB_MIB_WARNINGS 0
#define DS_LIB_SECLEVEL 1
#define DS_LIB_SNMPVERSION 2
#define DS_LIB_DEFAULT_PORT 3
#define DS_LIB_PRINT_SUFFIX_ONLY 4 /* oid node == 1 の も の を 表 示 す る 。
1 番 目 と 似 て い る が 、 mib モ ジ ュ ー ル
too == 2 の も の を 与 え る 。 */

/* 文 字 列 を 操 作 す る ラ イ ブ ラ リ で 使 わ れ る も の */
#define DS_LIB_SECNAME 0
#define DS_LIB_CONTEXT 1
#define DS_LIB_PASSPHRASE 2
#define DS_LIB_AUTHPASSPHRASE 3
#define DS_LIB_PRIVPASSPHRASE 4
#define DS_LIB_OPTIONALCONFIG 5
#define DS_LIB_APPTYPE 6
#define DS_LIB_COMMUNITY 7
#define DS_LIB_PERSISTENT_DIR 8
#define DS_LIB_CONFIGURATION_DIR 9

関 数

ds_set_boolean(int storeid, int which, int value)

value != 0 の 場 合 は 、 bool_storage[storeid][which] の ス ロ ッ ト に true を 入 れ る 。 そ れ 以 外 の 場 合 は false を 入 れ る 。

int ds_get_boolean(int storeid, int which)

storage[storeid][which] が true の 場 合 は 、 1 を 返 す 。 そ れ 以 外 の 場 合 は 、 0 を 返 す 。

int ds_set_string(int storeid, int which, const char *value)

value を ス ロ ッ ト string_storage[storeid][which] に 入 れ る 。

char *ds_get_string(int storeid, int which)

ス ロ ッ ト string_storage[storeid][which] に 入 っ て い る 文 字 列 を 返 す 。

ds_set_int(int storeid, int which, int value)

value を ス ロ ッ ト int_storage[storeid][which] に 入 れ る 。

int ds_get_int(int storeid, int which)

ス ロ ッ ト int_storage[storeid][which] に 入 っ て い る 整 数 値 を 返 す 。

void ds_shutdown(void)

ds_register_config と ds_register_premib で 集 め た 情 報 を 保 持 し て お く た め に 使 わ れ て い る メ モ リ を 回 収 す る 。

ds_register_config(u_char type, const char *ftype, const char *token,
int storeid, int which)

token は 設 定 フ ァ イ ル の デ ィ レ ク テ ィ ブ を 登 録 し 、 デ フ ォ ル ト の 格 納 タ イ プ と ス ロ ッ ト に 関 連 づ け る 。 特 に 、 storeid which type デ ー タ 型 の 格 納 ス ロ ッ ト を 指 す 。 type は 定 数 ASN_BOOLEAN, ASN_INTEGER, ASN_OCTET_STR の い ず れ か 1 つ で あ る 。 ftype 変 数 は token キ ー ワ ー ド を 探 す た め の フ ァ イ ル 名 の ベ ー ス 文 字 列 で あ る 。 例 え ば 、

ds_register_config(ASN_INTEGER, "snmp", "testtoken", DS_APPLICATION_ID, 5)

と い う 呼 び 出 し で は 、 snmp.conf フ ァ イ ル が 見 つ か っ て パ ー ス さ れ る と き に 、 "testtoken" と い う 語 で 始 ま る 行 が 読 ま れ 、 "testtoken" の 後 に あ る 値 が ス ロ ッ ト int_storage[DS_APPLICATION_ID][5] に 格 納 さ れ る 。 例 え ば 、 設 定 フ ァ イ ル の

testtoken 42

と い う 行 で は 、 int_storage[DS_APPLICATION_ID][5] = 42 に 設 定 さ れ る 。

関 連 項 目

snmp_config(5), read_config(3)