EN JA
CAP_IOCTLS_LIMIT(2)
CAP_IOCTLS_LIMIT(2) FreeBSD System Calls Manual CAP_IOCTLS_LIMIT(2)

名称

cap_ioctls_limit, cap_ioctls_get許可された ioctl コマンドを管理する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/capability.h>

int
cap_ioctls_limit( int fd, const unsigned long *cmds, size_t ncmds);

ssize_t
cap_ioctls_get( int fd, unsigned long *cmds, size_t maxcmds);

解説

ファイル記述子が CAP_IOCTL ケーパビリティ権利を与えられるなら、許可された ioctl(2) コマンドのリストは、 cap_ioctls_limit() システムコールで選択的に (拡張せずに) 縮小することができます。 cmds 引数は、 ioctl(2) コマンドの配列で、 ncmds 引数は、配列の要素の数を指定します。配列の 256 までの要素があり得ます。

与えられたファイル記述子のための許可された ioctl コマンドのリストは、 cap_ioctls_get() システムコールで取得することができます。 cmds 引数は、 maxcmds 値まで保持することができるメモリをさします。関数は、 maxcmds 要素まで提供されるバッファに投入しますが、与えられたファイル記述子のために許可された ioctl コマンドの合計数を常に返します。与えられたファイル記述子のための ioctl コマンドの合計数は、 cmds 引数として NULL を、 maxcmds 引数として 0 を渡すことによって取得することができます。 ( CAP_IOCTL ケーパビリティは、ファイル記述子に割り当てられ、 cap_ioctls_limit() システムコールが、このファイル記述子のために決して呼び出されなかった) すべての ioctl コマンドが許可されるなら、 cap_ioctls_get() システムコールは、 CAP_IOCTLS_ALL を返し、 cmds 引数によって指されたバッファを修正しないでしょう。

戻り値

The cap_ioctls_limit() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

cap_ioctls_get() 関数は、成功するなら、許可された ioctl コマンドの合計数を返し、すべての ioctl コマンドが許可されているなら、値 CAP_IOCTLS_ALL を返します。失敗すれば、値 -1 が返され、グローバル変数 errno は、エラーを示す値が設定されます。

エラー

cap_ioctls_limit() は、次の場合以外成功します:
[ EBADF]
fd 引数が、有効な記述子ではありません。
[ EFAULT]
cmds 引数が、無効のアドレスを指しています。
[ EINVAL]
ncmds 引数が、 256 を超えています。
[ ENOTCAPABLE]
cmds は、許可された ioctl(2) コマンドのリストを拡張するでしょう。

cap_ioctls_get() は、次の場合以外成功します:

[ EBADF]
fd 引数が、有効な記述子ではありません。
[ EFAULT]
cmds 引数が、無効のアドレスを指しています。

歴史

ケーパビリティとケーパビリティモードのサポートは、 TrustedBSD プロジェクトの一環として開発されました。

作者

この関数は、FreeBSD 財団の資金提供の下で Pawel Jakub Dawidek <pawel@dawidek.net>によって作成されました。
September 20, 2012 FreeBSD