Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       getsockopt, setsockopt - ソケットのオプションの設定と取得を行なう

書式

       #include <sys/types.h>          /* 「注意」参照 */
       #include <sys/socket.h>

       int getsockopt(int sockfd, int level, int optname,
                      void *optval, socklen_t *optlen);
       int setsockopt(int sockfd, int level, int optname,
                      const void *optval, socklen_t optlen);

説明

       getsockopt()  と setsockopt()  は、ファイルディスクリプター socket で参照されるソケットに関連するオプショ
       ンの操作を行う。  オプションは複数のプロトコル層(level)に存在するかもしれないが、  これらは常に最上位のソ
       ケット層へと設定される。

       ソケットオプションを操作する際には、オプションの層  (level) と オプションの名前を指定しなければならない。
       ソケット API 層でオプションを操作する為には、 levelSOL_SOCKET に指定する。 他の全ての層でオプションを
       操作する為には、与えられたオプションの  制御主体となるプロトコルのプロトコル番号を指定する。例えば、 オプ
       ションが TCP プロトコルで解釈されるべきことを指示するには、 levelTCP のプロトコル番号を指定しなければ
       ならない。 getprotoent(3)  を参照すること。

       optvaloptlen 引数は setsockopt()  のオプションの値にアクセスするために用いられる。 getsockopt()  では
       要求したオプションの値を返すためのバッファーを指定する。 getsockopt()  では  optlen  は値と結果両用の引数
       で、最初に optval の指しているバッファーのサイズを与え、実際に返される値のサイズに 書き換えられる。もしオ
       プション値を与えず、返されもしない場合には optval は NULL でも良い。

       optname および指定されたオプションは解釈されずに、適切なプロトコルモジュールに 渡されて解釈される。インク
       ルードファイル <sys/socket.h> には後述のソケット層のオプションの定義が含まれている。 他のプロトコル層では
       名前や形式は異なる。 マニュアルのセクション 4 の適切なエントリーを参照すること。

       ほとんどのソケット層のオプションは optvalint 引数を利用する。 setsockopt()  で、二値(boolean)オプショ
       ンを有効(enable)にするにはゼロ以外を指定し、 無効(disable)にするにはゼロを指定する。

       利用可能なソケットオプションの説明に関しては、 socket(7)  と適切なプロトコルの man ページを参照のこと。

返り値

       On  success,  zero  is  returned  for  the  standard options.  On error, -1 is returned, and errno is set
       appropriately.

       Netfilter allows the programmer to define custom  socket  options  with  associated  handlers;  for  such
       options, the return value on success is the value returned by the handler.

エラー

       EBADF  引数 sockfd は有効なファイルディスクリプターでない。

       EFAULT optval  で指定されたアドレスがプロセスのアドレス空間の有効な部分ではない。  getsockopt()  の場合、
              optlen がプロセスのアドレス空間の有効な部分でない場合にもこのエラーが返される。

       EINVAL setsockopt()  で option が不正である。 optval に無効な値が指定された場合にも、このエラーが発生する
              可能性がある (例えば、 ip(7)  に説明がある IP_ADD_MEMBERSHIP オプションなど)。

       ENOPROTOOPT
              指定された層(level)にはこのオプションは存在しない。

       ENOTSOCK
              ファイルディスクリプター sockfd がソケットを参照していない。

準拠

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (これらのシステムコールは 4.2BSD で最初に現れた)

注意

       POSIX.1  では <sys/types.h> のインクルードは必須とされておらず、 Linux ではこのヘッダーファイルは必要では
       ない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが  必要であり、移植性が必要なア
       プリケーションではこのファイルを インクルードするのが賢明であろう。

       For background on the socklen_t type, see accept(2).

バグ

       ソケットのオプションのいくつかはシステムのより低い層で 処理されるべきである。

関連項目

       ioctl(2), socket(2), getprotoent(3), protocols(5), ip(7), packet(7), socket(7), tcp(7), udp(7), unix(7)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。