.\" Copyright (c) 1983, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" $Id: getsockopt.2,v 1.1 1999/05/24 14:57:04 freitag Exp $ .\" .\" Modified Sat Jul 24 16:19:32 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified Mon Apr 22 02:29:06 1996 by Martin Schulze (joey@infodrom.north.de) .\" Modified Tue Aug 27 10:52:51 1996 by Andries Brouwer (aeb@cwi.nl) .\" Modified Thu Jan 23 13:29:34 1997 by Andries Brouwer (aeb@cwi.nl) .\" Modified Sun Mar 28 21:26:46 1999 by Andries Brouwer (aeb@cwi.nl) .\" Modified 1999 by Andi Kleen . .\" Removed most stuff because it is in socket.7 now. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1996 Akira Yoshiyama .\" all rights reserved. .\" Translated Sat Jul 6 00:43:37 JST 1996 .\" by Akira Yoshiyama .\" Modified Fri Nov 7 22:45:27 JST 1997 .\" by HANATAKA Shinya .\" Updated Sun Oct 12 JST 2003 by Kentaro Shirakata .\" .TH GETSOCKOPT 2 2020\-04\-11 Linux "Linux Programmer's Manual" .SH 名前 getsockopt, setsockopt \- ソケットのオプションの設定と取得を行なう .SH 書式 .nf \fB#include \fP /* 「注意」参照 */ \fB#include \fP .PP \fBint getsockopt(int \fP\fIsockfd\fP\fB, int \fP\fIlevel\fP\fB, int \fP\fIoptname\fP\fB,\fP \fB void *\fP\fIoptval\fP\fB, socklen_t *\fP\fIoptlen\fP\fB);\fP \fBint setsockopt(int \fP\fIsockfd\fP\fB, int \fP\fIlevel\fP\fB, int \fP\fIoptname\fP\fB,\fP \fB const void *\fP\fIoptval\fP\fB, socklen_t \fP\fIoptlen\fP\fB);\fP .fi .SH 説明 \fBgetsockopt\fP() と \fBsetsockopt\fP() は、ファイルディスクリプター \fIsocket\fP で参照されるソケットに関連するオプションの操作を行う。 オプションは複数のプロトコル層(level)に存在するかもしれないが、 これらは常に最上位のソケット層へと設定される。 .PP ソケットオプションを操作する際には、オプションの層 (level) と オプションの名前を指定しなければならない。 ソケット API 層でオプションを操作する為には、 \fIlevel\fP を \fBSOL_SOCKET\fP に指定する。 他の全ての層でオプションを操作する為には、与えられたオプションの 制御主体となるプロトコルのプロトコル番号を指定する。例えば、 オプションが \fBTCP\fP プロトコルで解釈されるべきことを指示するには、 \fIlevel\fP に \fBTCP\fP のプロトコル番号を指定しなければならない。 \fBgetprotoent\fP(3) を参照すること。 .PP \fIoptval\fP と \fIoptlen\fP 引数は \fBsetsockopt\fP() のオプションの値にアクセスするために用いられる。 \fBgetsockopt\fP() では要求したオプションの値を返すためのバッファーを指定する。 \fBgetsockopt\fP() では \fIoptlen\fP は値と結果両用の引数で、最初に \fIoptval\fP の指しているバッファーのサイズを与え、実際に返される値のサイズに 書き換えられる。もしオプション値を与えず、返されもしない場合には \fIoptval\fP は NULL でも良い。 .PP \fIoptname\fP および指定されたオプションは解釈されずに、適切なプロトコルモジュールに 渡されて解釈される。インクルードファイル \fI\fP には後述のソケット層のオプションの定義が含まれている。 他のプロトコル層では名前や形式は異なる。 マニュアルのセクション 4 の適切なエントリーを参照すること。 .PP ほとんどのソケット層のオプションは \fIoptval\fP に \fIint\fP 引数を利用する。 \fBsetsockopt\fP() で、二値(boolean)オプションを有効(enable)にするにはゼロ以外を指定し、 無効(disable)にするにはゼロを指定する。 .PP 利用可能なソケットオプションの説明に関しては、 \fBsocket\fP(7) と適切なプロトコルの man ページを参照のこと。 .SH 返り値 On success, zero is returned for the standard options. On error, \-1 is returned, and \fIerrno\fP is set appropriately. .PP 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. .SH エラー .TP \fBEBADF\fP 引数 \fIsockfd\fP は有効なファイルディスクリプターでない。 .TP \fBEFAULT\fP \fIoptval\fP で指定されたアドレスがプロセスのアドレス空間の有効な部分ではない。 \fBgetsockopt\fP() の場合、 \fIoptlen\fP がプロセスのアドレス空間の有効な部分でない場合にもこのエラーが返される。 .TP \fBEINVAL\fP \fBsetsockopt\fP() で \fIoption\fP が不正である。 \fIoptval\fP に無効な値が指定された場合にも、このエラーが発生する可能性がある (例えば、 \fBip\fP(7) に説明がある \fBIP_ADD_MEMBERSHIP\fP オプションなど)。 .TP \fBENOPROTOOPT\fP 指定された層(level)にはこのオプションは存在しない。 .TP \fBENOTSOCK\fP ファイルディスクリプター \fIsockfd\fP がソケットを参照していない。 .SH 準拠 .\" SVr4 documents additional ENOMEM and ENOSR error codes, but does .\" not document the .\" .BR SO_SNDLOWAT ", " SO_RCVLOWAT ", " SO_SNDTIMEO ", " SO_RCVTIMEO .\" options POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (これらのシステムコールは 4.2BSD で最初に現れた) .SH 注意 POSIX.1 では \fI\fP のインクルードは必須とされておらず、 Linux ではこのヘッダーファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが 必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。 .PP For background on the \fIsocklen_t\fP type, see \fBaccept\fP(2). .SH バグ ソケットのオプションのいくつかはシステムのより低い層で 処理されるべきである。 .SH 関連項目 \fBioctl\fP(2), \fBsocket\fP(2), \fBgetprotoent\fP(3), \fBprotocols\fP(5), \fBip\fP(7), \fBpacket\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBunix\fP(7) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。