setsockopt サブルーチン

目的

ソケットオプションを設定する。

ライブラリー

標準 C ライブラリー (libc.a)

構文

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/atmsock.h> /*Needed for SOCK_CONN_DGRAM socket type 
only*/
int setsockopt
(Socket, Level, OptionName, OptionValue, OptionLength)
int  Socket,  Level,  OptionName;
const void * OptionValue;
socklen_t  OptionLength;

説明

setsockopt サブルーチンは、ソケットに関連したオプションを設定します。 オプションは、マルチプロトコル・レベルで存在できます。 オプションは常に、最上位のソケット・レベルで表示されます。

setsockopt サブルーチンは、ソケット通信を制御する手段をアプリケーション・プログラムに提供します。 アプリケーション・プログラムは、 setsockopt サブルーチンを使用して、プロトコル・レベルでのデバッグ、バッファー・スペースの割り振り、タイムアウトの制御、またはソケット・データ・ブロードキャストの許可を行うことができます。 /usr/include/sys/socket.h ファイルは、 setsockopt サブルーチンで使用可能なすべてのオプションを定義します。

ソケット・オプションを設定する場合は、オプションが存在するプロトコル・レベルとオプションの名前を指定します。

パラメーター OptionValue および OptionLength を使用して、 setsockopt サブルーチンのオプション値にアクセスします。 これらのパラメーターは、要求されたオプションの値が戻されるバッファーを識別します。

setsockopt サブルーチンを含むすべてのアプリケーションは、特定の値に設定された _BSD マクロを使用してコンパイルする必要があります。 許容値は 43 および 44 です。 さらに、すべてのソケット・アプリケーションに BSD libbsd.a ライブラリーを組み込む必要があります。

パラメーター

項目 説明
ソケット 固有のソケット名を指定します。
レベル オプションが存在するプロトコル・レベルを指定します。 オプションを次のように設定します。
ソケット・レベル
Level パラメーターを SOL_SOCKETとして指定します。
その他のレベル
オプションを制御するプロトコルの適切なプロトコル番号を指定します。 例えば、オプションが TCP プロトコルによって解釈されることを示すには、 netinet/in.h ファイルで定義されているように、 Level パラメーターを TCP のプロトコル番号に設定します。 同様に、オプションが ATM プロトコルによって解釈されることを示すには、 sys/atmsock.hで定義されているように、 Level パラメーターを NDDPROTO_ATM に設定します。
OptionName 設定するオプションを指定します。 OptionName パラメーターおよび指定されたオプションは、解釈のために適切なプロトコル・モジュールに解釈されずに渡されます。 sys/socket.h ファイルは、ソケット・プロトコル・レベル・オプションを定義します。 netinet/tcp.h ファイルは、TCP プロトコル・レベル・オプションを定義します。 ソケット・レベルのオプションは、使用可能または使用不可にすることができます。これらのオプションはトグル方式で動作します。

以下のリストは、 sys/socket.h ファイルにあるソケット・プロトコル・レベル・オプションを定義しています。

SO_DEBUG
デバッグ情報の記録をオンにします。 このオプションによって、基礎になっているプロトコル・モジュールでの デバッグを使用可能または使用不可にすることができます。 このオプションは、コマンド・レベルで以下のいずれかの方法で設定します。
  • sodebug コマンドを使用します。このコマンドは、既存のソケットに対してこのオプションをオンまたはオフにします。
  • 特定のサービスに対してこのオプションをオンにするには、 inetd.conf のサービスの wait/nowait フィールドに |DEBUG[=level] を指定します。
  • sodebug_env パラメーターを noに設定し、プロセス環境で SODEBUG=level を指定します。 これは、プロセスによって作成される後続のすべてのソケットに対して、このオプションをオンまたはオフにします。
level の値は、 minnormal、または detailのいずれかです。
SO_REUSEADDR
bind サブルーチンによって提供されるアドレスの妥当性検査に使用される規則が、ローカル・ポートの再使用を許可することを指定します。

SO_REUSEADDR により、アプリケーションは、 SO_REUSEADDR が設定されているソケットのポート/アドレスへの後続の bind サブルーチンを明示的に拒否することができます。 これにより、アプリケーションは、他のアプリケーションが bind サブルーチンにバインドするのをブロックすることができます。

SO_REUSEPORT (SO_REUSEPORT)
bind サブルーチンによって提供されるアドレスの妥当性検査に使用される規則が、ローカル・ポート/アドレスの組み合わせの再使用を許可することを指定します。 ポート/アドレスの組み合わせの各バインディングでは、 SO_REUSEPORT ソケット・オプションを指定する必要があります。
SO_CKSUMREV (SO_CKSUMREV)
プロトコル層でのパフォーマンスの向上を可能にします。 プロトコルがこのオプションをサポートしている場合、使用可能にすると、ユーザーのデータがユーザーのバッファー ( recvrecvfromread、または recvmsg スレッド) に移動されるまで、プロトコルはチェックサム検査を延期します。 これにより、チェックサム・エラーの場合に、使用可能なデータがないときにアプリケーションがウェイクアップされる可能性があります。 この場合、EAGAIN が戻されます。 このオプションを設定するアプリケーションは、受信呼び出しからの EAGAIN エラー・コードを処理する必要があります。
SO_KEEPALIVE
接続されたソケットでの ACK メッセージの定期的伝送を使用可能または使用不可にすることにより、接続のアクティビティーをモニターします。 アイドル・インターバル時間は、TCP/IP no コマンドを使用して指定できます。 切断された接続については、「 Communications Programming Concepts」の 「Understanding Socket Types and Protocols」 で説明されています。
OptionName
SO_DONTROUTE
発信メッセージにルーティングを適用しません。 出力メッセージが標準ルーティング機能をバイパスする必要があることを示します。 代わりに、宛先アドレスのネットワーク部分に従って、適切なネットワーク・インターフェースに送信されます。
SO_BROADCAST
ブロードキャスト・メッセージの送信を許可します。
SO_LINGER
データが存在する場合は、 close サブルーチンに留まります。 このオプションは、ソケットに対して未送信メッセージ・キューが存在し、プロセスがソケットに対して close サブルーチンを実行するときに実行されるアクションを制御します。

SO_LINGER が設定されている場合、システムは、 close サブルーチンがデータを伝送できるようになるまで、または時間が経過するまで、プロセスをブロックします。 SO_LINGER が指定されていない場合に close サブルーチンが発行されると、システムは、プロセスができるだけ早く続行できるように呼び出しを処理します。

sys/socket.h ファイルは、リンガー時間間隔を指定するための l_linger メンバーを含む linger 構造体を定義します。 リンガー時間が 0 以外に設定されている場合、システムはソケットでキューに入れられたメッセージを送信しようとします。 l_linger メンバーが設定できる最大値は、65535 です。 アプリケーションが XPG_SUS_ENV 環境変数をエクスポートして SPEC1170 準拠の動作を要求した場合、リンガー時間は n 秒です。それ以外の場合、リンガー時間は n/100 秒 (ティック) です。ここで、 nl_linger メンバーの値です。

SO_OOBINLINE
受信されたアウト・オブ・バンド・データ (緊急とマークされたデータ) を回線に残します。
SO_SNDBUF
送信バッファー・サイズを設定します。
SO_RCVBUF
受信バッファー・サイズを設定します。
SO_SNDLOWAT (SO_SNDLOWAT)
最低水準点の送信を設定します。
SO_RCVLOWAT (SO_RCVLOWAT)
受信最低水準点を設定します。
SO_SNDTIMEO
例えば、 sendwrite サブルーチンなど、socket で呼び出される send 型関数が完了するまでにブロックされる最大時間を設定する。 SO_SNDTIMEO オプションは、 TIMEVAL 構造体を必要とする。 TIMEVAL 構造体には秒数とマイクロ秒数が含まれる。 TIMEVAL の値をマイクロ秒単位で指定できる。 しかし、この機能を実装するために使用される内部TCP/IPタイマーの粒度は10ミリ秒である。 タイムアウト値が10ミリ秒未満の値に設定された場合、タイムアウト値が設定されていない場合と同じ動作になる。
SO_RCVTIMEO
例えば、 recvread サブルーチンなど、socket で呼び出される受信型関数が完了するまでの最大待機時間を設定する。 SO_RCVTIMEO オプションは TIMEVAL 構造体を必要とする。 TIMEVAL 構造体には秒数とマイクロ秒数が含まれる。 TIMEVAL の値をマイクロ秒単位で指定できる。 しかし、この機能を実装するために使用される内部TCP/IPタイマーの粒度は10ミリ秒である。 タイムアウト値が10ミリ秒未満の値に設定された場合、タイムアウト値が設定されていない場合と同じ動作になる。
SO_ERROR
エラー状況の取得とクリアを設定します。
SO_TYPE
ソケット・タイプの検索を設定します。
OptionName

以下のリストは、 netinet/tcp.h ファイルにある TCP プロトコル・レベル・オプションを定義しています。

TCP_CWND_IF (TCP_CWND_IF)
輻輳回避中に TCP 輻輳ウィンドウ (cwnd) の係数を増やします。 値は 0 から 100 の範囲でなければなりません (0 は無効)。 tcp_cwnd_modified ネットワーク・チューナブル・オプションを有効にする必要があります。
TCP の CWND_DF
輻輳回避中に TCP cwnd の係数を減らします。 値は 0 から 100 の範囲でなければなりません (0 は無効)。 tcp_cwnd_modified ネットワーク・チューナブル・オプションを有効にする必要があります。
TCP_NOTENTER_SSTART (TCP_NOTENTER_SSTART)
再送タイムアウト後にスロー・スタートに再入しないようにします。これにより、現在のスロー・スタートしきい値 (ss_threshold) のサイズまたは最大 cwnd (max cwnd/2) の半分ではなく、cwnd が初期ウィンドウ・サイズにリセットされる可能性があります。 値は、enable の場合は 1、disable の場合は 0 です。 tcp_cwnd_modified ネットワーク・チューナブル・オプションを有効にする必要があります。
TCP_ NOREDUCE_CWND_IN_FRXMT (TCP_ NOREDUCE_CWND_IN_FRXMT)
高速再送句では、cwnd サイズを小さくしません。 値は、enable の場合は 1、disable の場合は 0 です。 tcp_cwnd_modified ネットワーク・チューナブル・オプションを有効にする必要があります。
TCP_ NOREDUCE_CWND_EXIT_FRXMT (TCP_ NOREDUCE_CWND_EXIT_FRXMT)
高速再送句の終了時には、cwnd サイズを小さくしません。 値は、enable の場合は 1、disable の場合は 0 です。 tcp_cwnd_modified ネットワーク・チューナブル・オプションを有効にする必要があります。
TCP_KEEPCNT (TCP_KEEPCNT)
接続を検証するために送信されるキープアライブ・パケットの最大数を指定します。 このソケット・オプション値は、親ソケットから継承されます。 デフォルトは 8 です。
TCP_KEEPIDLE (TCP_KEEPIDLE)
TCP がキープアライブ・パケットを送信するまでの接続のアイドル時間 (秒数) を指定します。 このソケット・オプション値は、受け入れシステム・コールから親ソケットから継承されます。 デフォルト値は 7200 秒 (14400 0.5 秒) です。
TCP_KEEPINTVL (TCP_KEEPINTVL)
キープアライブ・パケット間の時間間隔を指定します。 これは秒単位で測定されます。 このソケット・オプション値は、受け入れシステム・コールから親ソケットから継承されます。 デフォルト値は 75 秒 (150 0.5 秒) です。
TCP_NODELAY
TCP がデータを送信するタイミングを決定するために Nagle アルゴリズムに従う必要があるかどうかを指定します。 デフォルトでは、TCP は Nagle アルゴリズムに従います。 この動作を使用不可にするために、アプリケーションは TCP_NODELAY を使用可能にして、TCP が常に即時にデータを送信するように強制することができます。 例えば、要求/応答に TCP を使用するアプリケーションがある場合は、 TCP_NODELAY を使用する必要があります。
OptionName
TCP_RFC1323
指定された TCP ソケットで RFC 1323 機能拡張を有効または無効にします。 アプリケーションには、RFC 1323 を使用可能にするために以下の行を含めることができます。
int on=1;
setsockopt(s,IPPROTO_TCP,TCP_RFC1323,&on,
           sizeof(on));
TCP_STDURG (TCP_STDURG)
RFC 1122 準拠の緊急ポイント処理を有効または無効にします。 デフォルトでは、TCP は 4.2 BSD オペレーティング・システムに準拠した緊急ポインター動作を実装します。つまり、このオプションはデフォルトで 0 になります。
「TCP_NODELAYACK」
TCP が即時肯定応答パケットを送信側に送信する必要があるかどうかを指定します。 このオプションが設定されていない場合、TCP は肯定応答パケットの送信を最大 200 ミリ秒遅らせます。 これにより、応答のデータとともに肯定応答を送信することができ、システム・オーバーヘッドを最小限に抑えることができます。 この TCP オプションを設定すると、システム・オーバーヘッドがわずかに増加する可能性がありますが、送信側が受信側の確認応答を待機している場合は、ネットワーク転送のパフォーマンスが向上する可能性があります。

TCP プロトコル・レベルのソケット・オプションは、listen ソケットから新規ソケットに継承されます。

以下のリストは、 sys/atmsock.h ファイルにある ATM プロトコル・レベル・オプションを定義しています。

SO_ATM_PARAM (SO_ATM_PARAM)
すべての ATM パラメーターを設定します。 このソケット・オプションは、以下で説明する個々のソケット・オプションを使用する代わりに使用できます。 sys/call_ie.h ファイルに定義されている connect_ie 構造体を使用します。
so_atm_aal_parm
ATM AAL (Adaptation Layer) パラメーターを設定します。 sys/call_ie.h ファイルに定義されている aal_parm 構造体を使用します。
so_atm_traffic_des
ATM トラフィック記述子の値を設定します。 これは、 sys/call_ie.h ファイルに定義されている トラフィック 構造体を使用します。
SO_ATM_BEARER
ATM Bearer 機能を設定します。 sys/call_ie.h ファイルに定義されている bearer 構造体を使用します。
「SO_ATM_BHLI」
ATM ブロードバンド高層情報を設定します。 sys/call_ie.h ファイルに定義されている bhli 構造体を使用します。
SO_ATM_BLLI (SO_ATM_BLLI)
ATM ブロードバンド低層情報を設定します。 sys/call_ie.h ファイルに定義されている blli 構造体を使用します。
SO_ATM_QOS
ATM サービス品質の値を設定します。 sys/call_ie.h ファイルに定義されている qos_parm 構造体を使用します。
So_ATM_TRANSIT_SEL
ATM Transit Selector Carrier を設定します。 sys/call_ie.h ファイルに定義されている transit_sel 構造体を使用します。
OptionName
SO_ATM_ACCEPT (SO_ATM_ACCEPT)
ACCEPT システム・コールを介してアプリケーションに指示された、着信 ATM コールの受け入れを示します。 これは、着信接続を完全に確立するための問題でなければなりません。 これにより、ATM パラメーターのネゴシエーションが可能になります。
SO_ATM_MAX_PEND (SO_ATM_MAX_PEND)
送信操作の結果としてエラー表示がアプリケーションに戻される前に許可される、未処理の送信バッファーの数を設定します。 このオプションは、非ベスト・エフォート・タイプのバーチャル・サーキットにのみ有効です。 OptionValue/OptionLengthは、このパラメータに設定される値を含むバイトを指す。

以下のリストは、 netinet/sctp.h ファイルにある IPPROTO_TCP プロトコル・レベル・オプションを定義しています。

SCTP_PEER_ADDR_PARAMS (SCTP_PEER_ADDR_PARAMS)
関連のハートビートを有効または無効にし、関連のハートビート間隔を変更します。 このオプションは、 netinet/sctp.h ファイルに定義されている sctp_paddrparams 構造体を使用します。 spp_address フィールドでは、 AIX® はワイルドカード・アドレスのみをサポートするようになりました。 spp_flags フィールドでは、 SPP_HB_ENABLESPP_HB_DISABLE、および SPP_HB_TIME_ISZERO フラグがサポートされます。 spp_hbinterval フィールドには、最小値 50 ミリ秒を設定できます。
SCTP_MAXSEG (SCTP_MAXSEG)
発信 SCTP DATA チャンクの最大サイズを設定します。 メッセージが指定されたサイズより大きい場合、メッセージは SCTP によって指定されたサイズにフラグメント化されます。 netinet/sctp.h ファイルに定義されている sctp_assoc_value 構造体を使用します。
OptionValue OptionValue パラメーターは Int パラメーターを取ります。 ブール・オプションを有効にするには、 OptionValue パラメーターをゼロ以外の値に設定します。 オプションを使用不可にするには、 OptionValue パラメーターを 0 に設定します。

以下のオプションは、同じ方法で有効化および無効化を行います。

  • SO_DEBUG
  • SO_REUSEADDR
  • SO_KEEPALIVE
  • SO_DONTROUTE
  • SO_BROADCAST
  • SO_OOBINLINE
  • SO_LINGER
  • TCP_RFC1323
OptionLength OptionLength パラメーターには、 OptionValue パラメーターが指すバッファーのサイズが入っています。

その他のプロトコル・レベルのオプションは、フォーマットと名前が異なります。

項目 説明
IP_DONTFRAG (IP_DONTFRAG) IP ヘッダー内のすべてのパケットに対して、これ以降の DF ビットをオンに設定します。 パス MTU の減少を検出するために、UDP アプリケーションは IP_DONTFRAG オプションを使用します。
IP_FINDPMTU (IP_FINDPMTU) このパスの PMTU ディスカバリーを有効/無効に設定します。 ディスカバリーを実行するには、プロトコル・レベル・パス MTU ディスカバリーを有効にする必要があります。
IP_PMTUAGE (IP_PMTUAGE) PMTU の経過時間を設定します。 セッションの PMT 削減ディスカバリーの頻度を指定します。 0 (ゼロ) に設定すると、無限存続期間が暗黙指定され、PMTU 削減ディスカバリーは試行されません。 これにより、以前に設定された PMTU 経過時間が置き換えられます。 新しい PMTU 経過時間は、現在設定されているタイマーの有効期限が切れた後に有効になります。 現在、UDP アプリケーションは PMTU の減少を即時に検出するように IP_DONTFRAG ソケットを設定する必要があるため、このオプションは使用されません。
IP_TTL (IP_TTL) すべてのパケットの IP ヘッダーに存続時間フィールドを設定します。 ただし、ロー・ソケットの場合は、 setsockopt サブルーチンを使用して設定された値に関係なく、メッセージの送信時にデフォルトの MAXTTL 値が使用されます。
IP_HDRINCL (IP_HDRINCL) このオプションにより、ユーザーは独自の IP ヘッダーを作成できます。 これは、完全な IP ヘッダーがデータに組み込まれ、ロー・ソケットにのみ使用できることを示します。
IP_ADD_MEMBERSHIP ip_mreq 構造体タイプの OptionValue パラメーターで指定されたマルチキャスト・グループを結合します。
IP_DROP_MEMBERSHIP マルチキャスト・グループを、 ip_mreq 構造体タイプの OptionValue パラメーターで指定されたままにします。
IP_MULTICAST_IF ip_addr 構造体タイプの OptionValue パラメーターで指定されたインターフェースで、マルチキャスト・メッセージの送信を許可します。 INADDR_ANY (0x000000000) のアドレスは、マルチキャスト・オプションで以前に選択されたインターフェースを除去します。 インターフェースが指定されていない場合は、デフォルト経路に至るインターフェースが使用されます。
IP_MULTICAST_LOOP マルチキャスト・ループバックを設定し、送信されたメッセージが送信側ホストに配信されるかどうかを決定します。 char 型の OptionValue パラメーターは、ループバックのオン/オフを制御します。
IP_MULTICAST_TTL マルチキャスト・パケットの存続時間 (TTL) を設定します。 char 型の OptionValue パラメーターは、0 から 255 の範囲の TTL の値を設定します。
IP_BLOCK_SOURCE 特定のソースから特定のグループへのデータをブロックします。
IP_UNBLOCK_SOURCE ブロックされたソースを非ブロック化します ( IP_BLOCK_SOURCE 操作を元に戻すため)。
IP_ADD_SOURCE_MEMBERSHIP ソース固有のマルチキャスト・グループを結合します。 ホストがグループのメンバーである場合は、ソースからのデータを受け入れます。そうでない場合は、グループに参加して、指定されたソースからのデータを受け入れます。
IP_DROP_SOURCE_MEMBERSHIP ソース固有のマルチキャスト・グループを終了します。 指定されたマルチキャスト・グループ・リストからソースをドロップします。 特定のグループのすべてのソースをドロップするには、 IP_DROP_MEMBERSHIP ソケット・オプションを使用します。
項目 説明
IPPROTO_IPV6 AF_INET6 ソケットを IPv6 通信のみに制限します。
オプション・タイプ:
int (ブール解釈)
  ユーザーがユニキャスト IPv6 パケットの発信ホップ限界を設定できるようにします。
オプション・タイプ:
整数 (x)
オプション値:
x <-1エラー EINVAL
x ==-1カーネルのデフォルトを使用
0 < = x < = 255 使用
x x> = 256 エラー EINVAL
  ユーザーがマルチキャスト IPv6 パケットの発信ホップ限界を設定できるようにします。
オプション・タイプ:
整数 (x)
オプション値:
解釈は、 IPV6_UNICAST_HOPS (上記のリスト) と同じです。
  発信マルチキャスト・パケットに使用されるインターフェースをユーザーが指定できるようにします。 0 を指定すると、システムは発信インターフェースを選択します。
オプション・タイプ:
unsigned int (使用するインターフェースの索引)
  マルチキャスト・データグラムが、送信側ホストが属するグループに送信される場合、データグラムのコピーは、ローカル・デリバリーのために IP レイヤーによってループバックされます (オプションが 1 に設定されている場合)。 このオプションが 0 に設定されている場合、コピーはループバックされません。
オプション・タイプ:
unsigned int
  指定されたローカル・インターフェース上のマルチキャスト・グループを結合します。 インターフェース・インデックスが 0 に指定されている場合、カーネルはローカル・インターフェースを選択します。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct ipv6_mreq
  指定されたインターフェースにマルチキャスト・グループを残します。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct ipv6_mreq
  カーネルが、データに対してチェックサムを計算し、ロー・ソケットに対して pseudo-IPv6 ヘッダーを計算することを指定します。 カーネルは、発信パケットのチェックサムを計算し、そのソケット上の着信パケットのチェックサムを検証します。 正しくないチェックサムを持つ着信パケットは廃棄されます。 このオプションはデフォルトで無効になっています。
オプション・タイプ:
int
オプション値:
チェックサム結果を保管する必要があるユーザー・データへのオフセット。 これは正の偶数値でなければなりません。 値を-11に設定すると、このオプションは無効になる。
  UDP ソケットおよびロー・ソケットで、着信 IPv6 パケットの宛先 IPv6 アドレスおよび着信インターフェース・インデックスを補助データとして受信します。
オプション・タイプ:
int (ブール解釈)
  着信 IPv6 パケットのホップ限界を、UDP およびロー・ソケット上の補助データとして受信します。
オプション・タイプ:
int (ブール解釈)
  着信 IPv6 パケットのトラフィック・クラスが、UDP およびロー・ソケットで補助データとして受信されるようにします。
オプション・タイプ:
int (ブール解釈)
  着信 IPv6 パケットのルーティング・ヘッダー (ある場合) を、UDP ソケットおよびロー・ソケットで補助データとして受信します。
オプション・タイプ:
int (ブール解釈)
  着信 IPv6 パケットのホップ・バイ・ホップ・オプション・ヘッダー (ある場合) が、UDP ソケットおよびロー・ソケットで補助データとして受信されるようにします。
オプション・タイプ:
int (ブール解釈)
  着信 IPv6 パケットの宛先オプション・ヘッダー (ある場合) を、UDP ソケットおよびロー・ソケットで補助データとして受信します。
オプション・タイプ:
int (ブール解釈)
  このソケットで送信されるすべての IPv6 パケットのソース IPv6 アドレスと発信インターフェース・インデックスを設定します。 このオプションは、 ipi6_addrin6addr_anyipi6_ifindex が 0 の通常の setsockopt を実行することによってクリアできます。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct in6_pktinfo
  このソケット上の発信 IPv6 データグラムのネクスト・ホップを設定します。 このオプションは、長さが 0 の通常の setsockopt を実行することによってクリアできます。 この場合でも、オプション値に対してメモリー・ポインターを指定する必要があることに注意してください。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct sockaddr_in6
  このソケット上の発信 IPv6 データグラムのトラフィック・クラスを設定します。 このオプションをクリアするには、アプリケーションは値として-1を指定できる。
オプション・タイプ:
整数 (x)
オプション値:
x <-1エラー EINVAL
x ==-1カーネルのデフォルトを使用
0 < = x < = 255 使用
x x> = 256 エラー EINVAL
  このソケット上の発信 IPv6 データグラムに使用されるルーティング・ヘッダーを設定します。 このオプションは、長さが 0 の通常の setsockopt を実行することによってクリアできます。 この場合でも、オプション値に対してメモリー・ポインターを指定する必要があることに注意してください。
オプション・タイプ:
netinet/ip6.h ファイルに定義されている struct ip6_rthdr
  このソケット上の発信 IPv6 データグラムに使用されるホップ・バイ・ホップ・オプション・ヘッダーを設定します。 このオプションは、長さが 0 の通常の setsockopt を実行することによってクリアできます。 この場合でも、オプション値に対してメモリー・ポインターを指定する必要があることに注意してください。
オプション・タイプ:
netinet/ip6.h ファイルに定義されている struct ip6_hbh
  このソケット上の発信 IPv6 データグラムに使用される宛先オプション・ヘッダーを設定します。 このヘッダーは、ルーティング・ヘッダー (存在する場合) の後に続き、ルーティング・ヘッダーが指定されていない場合にも使用されます。 このオプションは、長さが 0 の通常の setsockopt を実行することによってクリアできます。 この場合でも、オプション値に対してメモリー・ポインターを指定する必要があることに注意してください。
オプション・タイプ:
netinet/ip6.h ファイルに定義されている struct ip6_dest
  このソケット上の発信 IPv6 データグラムに使用される宛先オプション・ヘッダーを設定します。 このヘッダーは、ルーティング・ヘッダー (存在する場合) の前に置かれます。 ルーティング・ヘッダーが指定されていない場合、このオプションは暗黙的に無視されます。 このオプションは、長さが 0 の通常の setsockopt を実行することによってクリアできます。 この場合でも、オプション値に対してメモリー・ポインターを指定する必要があることに注意してください。
オプション・タイプ:
netinet/ip6.h ファイルに定義されている struct ip6_dest
  IPv6 パス MTU ディスカバリーを制御するために、このオプションを設定します。
オプション・タイプ:
int
オプション・タイプ:
-1 destinations.0ユニキャスト宛先にはパス MTU 発見を実行するが、マルチキャストには実行しない。 常にパスの MTUdiscovery.1 常にパス MTU ディスカバリーを使用不可にし、最小 MTU でパケットを送信します。
  このオプションを設定すると、このソケットでの発信 IPv6 パケットのフラグメント化が防止されます。 発信インターフェース MTU より大きいパケットが送信されると, そのパケットは破棄されます。
オプション・タイプ:
int (ブール解釈)
  このオプションを設定することにより、 IPV6_PATHMTU 補助データ項目の受信を使用可能にします。
オプション・タイプ:
int (ブール解釈)
  このソケットのアドレス選択設定を指定します。
オプション・タイプ:
INT
オプション値:
netinet/in.h で定義されている IPV6_PREFER_SRC_* フラグの組み合わせ
  group_req 構造体の OptionValue パラメーターで指定されたマルチキャスト・グループを結合します。 指定されたインターフェース・インデックスが 0 の場合、カーネルはデフォルト・インターフェースを選択します。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_req
  マルチキャスト・グループを、 group_req 構造体の OptionValue パラメーターで指定されたままにします。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_req
  指定されたソースから指定されたマルチキャスト・グループへのデータをブロックします。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_source_req
  指定されたソースから指定されたマルチキャスト・グループへのデータのブロックを解除します。 このオプションは、 MCAST_BLOCK_SOURCE 操作を元に戻すために使用されます。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_source_req
  ソース固有のマルチキャスト・グループを結合します。 ホストが既にグループのメンバーである場合は、指定されたソースからのデータを受け入れます。そうでない場合は、グループに参加して、指定されたソースからのデータを受け入れます。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_source_req
  ソース固有のマルチキャスト・グループを終了します。 指定されたマルチキャスト・グループから指定されたソースを残します。 マルチキャスト・グループのすべてのソースを残すには、 IPV6_LEAVE_GROUP または MCAST_LEAVE_GROUP ソケット・オプションを使用します。
オプション・タイプ:
netinet/in.h ファイルに定義されている struct group_source_req
項目 説明
IPPROTO_ICMPV6 ユーザーが ICMPV6 メッセージを ICMPV6 タイプ・フィールドでフィルターに掛けることができるようにします。 既存のフィルターをクリアするには、長さをゼロにして setsockopt 呼び出しを発行します。
オプション・タイプ:
netinet/icmp6.h ファイルに定義されている icmp6_filter 構造体。
setsockopt サブルーチンは、 dacinet 関数を構成するために、以下の値 ( /usr/include/netint/tcp.h ファイルに定義されている) を使用します。
注: DACinet 機能は、 CAPP/EAL4 + 構成済み AIX システムでのみ使用可能です。
tcp.h:#define TCP_ACLFLUSH    0x21    /* clear all DACinet ACLs */
tcp.h:#define TCP_ACLCLEAR    0x22    /* clear DACinet ACL */
tcp.h:#define TCP_ACLADD      0x23    /* Add to DACinet ACL */
tcp.h:#define TCP_ACLDEL      0x24    /* Delete from DACinet ACL */
tcp.h:#define TCP_ACLLS       0x25    /* List DACinet ACL */
tcp.h:#define TCP_ACLBIND     0x26    /* Set port number for TCP_ACLLS */
tcp.h:#define TCP_ACLGID      0x01    /* ID being added to ACL is a GID */
tcp.h:#define TCP_ACLUID      0x02    /* ID being added to ACL is a GID */
tcp.h:#define TCP_ACLSUBNET   0x04    /* address being added to ACL is a subnet */
tcp.h:#define TCP_ACLDENY     0x08    /* this ACL entry is for denying access */

戻り値

正常終了時には値 0 が返されます。

setsockopt サブルーチンが失敗すると、サブルーチン・ハンドラーは以下の関数を実行します。

  • 呼び出し元のプログラムに-1を返す。
  • 特定のエラーを示すエラー・コードを errno グローバル変数に移動します。

エラー・コード

項目 説明
EBADF Socket パラメーターが有効ではありません。
EFAULT Address パラメーターは、ユーザー・アドレス・スペースの書き込み可能部分にはありません。
EINVAL OptionValue パラメーターまたは OptionLength パラメーターが無効であるか、ソケットがシャットダウンされました。
ENOBUFS 内部データ構造用のメモリーが不足しています。
ENOTSOCK Socket パラメーターは、ソケットではなくファイルを参照します。
ENOPROTOOPT オプションが不明です。
EOPNOTSUPP このオプションは、ソケット・ファミリーまたはソケット・タイプによってサポートされていません。
EPERM ユーザー・アプリケーションには、このソケット・オプションを取得または設定する許可がありません。 ネットワーク・チューナブル・オプションを確認してください

  • ソケットにブロードキャストのマークを付けるには、以下のようにします
    int on=1;
    setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
  • TCP_NODELAYACK オプションをオンにするには、以下を実行します。
    int on=1;
    setsockopt(s, IPPROTO_TCP, TCP_NODELAYACK, &on, sizeof(on));