getsockopt() コールと setsockopt() コールのパラメーター

s
ソケット・ディスクリプター。
level
ソケット・オプションを操作するときには、 オプションが存在するレベルとオプションの名前を指定しなければなりません。 ソケット・レベルでオプションを操作するには、level パラメーターは、socket.h で定義されている SOL_SOCKET に設定しなければなりません。 TCP レベルの TCP_NODELAY の場合は、level パラメーターは IPPROTO_TCP に設定しなければなりません。 他の TCP レベルのオプションまたはその他のレベル (IP レベルなど) のオプションを操作するには、 オプションを制御しているプロトコルの該当プロトコル番号を提供します。 現在は、IPPROTO_IP、IPPROTO_IPV6、IPPROTO_TCP、および SOL_SOCKET レベルのみがサポートされています。
optname
指定されたソケット・オプションの名前。 CICS® TCP/IP で使用可能なオプションは、optname の可能なエントリーに示されています。
optval および optlen
getsockopt() の場合、optval および optlen パラメーターは、 そのコールの特定の形式で使用されたデータを戻すのに使用されます。 optval パラメーターは、get コマンドで要求されているデータを受信するバッファーを指します。 optlen パラメーターは、optval パラメーターによって指されるバッファーのサイズを指します。 getsockopt() をコールする前に、 最初にバッファーのサイズに設定しなければなりません。 戻りでは、戻されたデータの実際のサイズに設定されます。

setsockopt() では、optval および optlen パラメーターは、 特定の set コマンドで使用されるデータを渡すのに使用されます。 optval パラメーターは、set コマンドで必要なデータが入っているバッファーを指します。 optval パラメーターは任意指定であり、 コマンドでデータが必要でない場合、NULL ポインターに設定することもできます。 optlen パラメーターは、optval によって指されるデータのサイズに設定しなければなりません。

両方のコールについて、SO_LINGER 以外のすべてのソケット・レベル・オプションは、optval が整数を指し、optlen は整数のサイズに設定されるものと予期します。 整数が非ゼロのときには、 オプションは使用可能です。 整数がゼロのときには、オプションは使用不可です。 SO_LINGER オプションは 、optvalsocket.h で定義されている linger 構造体を指すものと予期します。

この構造体は次の例で定義されています。
#include <manifest.h>
struct  linger
{
       int     l_onoff;                /* option on/off */
       int     l_linger;               /* linger time */
};

SO_LINGER オプションを使用不可にする場合は 、l_onoff フィールドをゼロに設定します。 非ゼロ値はオプションを使用可能にします。 l_linger フィールドには、 クローズを延長する時間を指定します。 l_linger の単位は、秒です。