EN JA
JAIL(3)
JAIL(3) FreeBSD Library Functions Manual JAIL(3)

名称

jail_getid, jail_getname, jail_setv, jail_getv, jailparam_all, jailparam_init, jailparam_import, jailparam_import_raw, jailparam_set, jailparam_get, jailparam_export, jailparam_freeシステム jail を作成して、管理する

ライブラリ

Jail Library (libjail, -ljail)

書式

#include < sys/param.h>
#include < sys/jail.h>
#include < jail.h>

extern char jail_errmsg[];

int
jail_getid( const char *name);

char *
jail_getname( int jid);

int
jail_setv( int flags, ...);

int
jail_getv( int flags, ...);

int
jailparam_all( struct jailparam **jpp);

int
jailparam_init( struct jailparam *jp, const char *name);

int
jailparam_import( struct jailparam *jp, const char *value);

int
jailparam_import_raw( struct jailparam *jp, void *value, size_t valuelen);

int
jailparam_set( struct jailparam *jp, unsigned njp, int flags);

int
jailparam_get( struct jailparam *jp, unsigned njp, int flags);

char *
jailparam_export( struct jailparam *jp);

void
jailparam_free( struct jailparam *jp, unsigned njp);

解説

jail ライブラリは、 jail_set(2)jail_get(2) システムコール、と security.jail.param MIB エントリへのインタフェースです。パラメータの形式を知らずに、jail の設定と問い合わせを許可して、内部と文字列形式の間の jail パラメータの変換を簡素化します。

jail_getid() 関数は、 name によって識別される jail の JID を返すか、または jail が存在しないなら、-1 を返します。

jail_getname() 関数は、 jid によって識別される jail の名前を返すか、または jail が存在していないなら、 NULL を返します。

jail_setv() 関数は、名前と値の文字列の NULL で終了するのリストを取り、それを jail_set(2) に渡します。

jail_getv() 関数は、名前と値の文字列の NULL で終了するのリストを取り、それを jail_get(2) に渡します。値の文字列が、返されたパラメータの文字列表現を保持できるくらい十分大きなバッファを指すことを保証することは、呼び出し側の責任です。

jailparam_all() 関数は、 jpp をすべての知られている jail パラメータのリストに設定し、パラメータの数を返します。リストは、後で jailparam_free() と free(3) で解放されるべきです。

jailparam_init() 関数は、パラメータのレコードをクリアして、それに name をコピーします。使用の後に、それは、 jailparam_free() で解放されるべきです。

jailparam_import() 関数は、文字列からその自然な形式に変換して、 value をパラメータのレコードに追加します。 jailparam_import_raw() 関数は、何も変換を実行せずに、値を追加します。

jailparam_set() 関数は、パラメータのリストを jail_set(2) に渡します。パラメータは、 jailparam_init() と jailparam_import() で作成されたと見なします。

jailparam_get() 関数は、パラメータのリストを jail_get(2) に渡します。パラメータは、 jailparam_init() または jailparam_list() で作成されたと見なし、 1 つのパラメータ (キー) は、 jailparam_import() で値を与えられます。

jailparam_export() 関数は、パラメータ値と同等の文字列を返します。返された文字列は、使用した後に解放されるべきです。

jailparam_free() 関数は、パラメータリストの格納された名前と値を解放します。リスト自体が jailparam_all() から来るなら、それは、同様に、解放されるべきです。

戻り値

jail_getid(), jail_setv(), jail_getv(), jailparam_set() と jailparam_get() 関数は、成功すれば、JID を返し、エラーであれば、-1 を返します。

jail_getname() と jailparam_export() 関数は、成功すれば、動的に割り付けられた文字列を返し、エラーであれば、 NULL を返します。

jailparam_all() 関数は、成功すれば、パラメータの数を返し、エラーであれば、-1 を返します。

jailparam_init(), jailparam_import() と jailparam_import_raw() 関数は、成功すれば、0 を返し、エラーであれば、-1 を返します。

エラーが返されるときはいつでも、 errno が設定され、グローバルな文字列 jail_errmsg は、ことによると jail_set(2) または jail_get(2) から、エラーの説明を含んでします。

使用例

jail “foo”のホスト名を“foo.bar”に設定します:

jail_setv(JAIL_UPDATE, "name", "foo", "host.hostname", "foo.bar", 
    NULL);

または:

struct jailparam params[2]; 
jailparam_init(&params[0], "name"); 
jailparam_import(&params[0], "foo"); 
jailparam_init(&params[1], "host.hostname"); 
jailparam_import(&params[1], "foo.bar"); 
jailparam_set(params, 2, JAIL_UPDATE); 
jailparam_free(params, 2);

jail “foo”のホスト名を検索します:

char hostname[MAXHOSTNAMELEN]; 
jail_getv(0, "name", "foo", "host.hostname", hostname, NULL);

または:

struct jailparam params[2]; 
jailparam_init(&params[0], "name"); 
jailparam_import(&params[0], "foo"); 
jailparam_init(&params[1], "host.hostname"); 
jailparam_get(params, 2, 0); 
hostname = jailparam_export(&params[1]); 
jailparam_free(params, 2); 
... 
free(hostname);

エラー

jail 関数は、 jail_set(2), jail_get(2), malloc(3) または sysctl(3) からエラーを返すかもしれません。さらに、次のエラーが起こるかもしれません:
[ EINVAL]
パラメータ値を渡された文字列から内部の形式に変換することができません。
[ ENOENT]
指定されたパラメータが存在していません。
[ ENOENT]
パラメータは、未知のタイプです。

関連項目

jail(2), sysctl(3), jail(8)

歴史

jail ライブラリは、 FreeBSD 8.0 ではじめて登場しました。

作者

James Gritton
August 31, 2010 FreeBSD