z/OS® Communications Server では、CINET 機能を使用して、複数の TCP/IP スタックを単一の MVS™ イメージに構成できます。CINET 構成では、z/OS UNIX ソケット・インターフェースを使用するアプリケーションは、CINET のもとで構成されたすべての TCP/IP プロトコル・スタックへの透過的なアクセスが取得できます。例えば、 z/OS UNIX ソケットに対してコーディングされたアプリケーションが CINET 環境で、SOCKET/BIND/LISTEN を実行すると、 その要求は CINET によってすべての TCP/IP スタックに伝えられます。これによって、このアプリケーションは、構成された いずれの TCP/IP スタックに到着したクライアント要求に対しても、その事実を認識せずに サービスすることができます。このタイプのアプリケーションは、しばしば、一般サーバー またはデーモン と呼ばれます。
z/OS Communications Server で出荷される次のサーバーまたはデーモンは、一般です。
z/OS UNIX RSHD、REXECD、および TELNETD は、通常、INETD デーモンによって開始され、このデーモンは、z/OS UNIX の一部として出荷されています。INETD もまた一般デーモンであるため、INETD によって開始されるサーバー・プロセスもすべて同様に、一般サーバーになります。
INETD (一般サーバー) により開始されたサーバーが 特定のスタックへのアフィニティーを必要とする場合、このアフィニティーは _BPXK_SETIBMOPT_TRANSPORT 環境変数を使用することにより達成されます。_BPXK_SETIBMOPT_TRANSPORT 環境変数について詳しくは、「z/OS UNIX System Services 計画」を参照してください。
_BPXK_SETIBMOPT_TRANSPORT 環境変数が設定されると、XL C/C++ コンパイラーで提供されている setibmopt() 関数呼び出しと似たような効果があります。この関数呼び出しについては、「z/OS XL C/C++ ランタイム・ライブラリー・リファレンス」に記述されています。この変数は、z/OS UNIX C/C++ プログラムを実行する開始プロシージャーまたはバッチ・ジョブの JCL に設定して、アプリケーションがバインドする必要のある TCP/IP スタック・インスタンスを示すことができます。OSNMPD および OMPROUTE のような、特定の TCP/IP スタックに対するアフィニティーを必要とする TCP/IP アプリケーションは、setibmopt() 関数呼び出しを使用します。BPXK_SETIBMOPT_TRANSPORT 環境変数は、基本的には、アプリケーションの一般サーバー・タイプを特定のスタックにバインドする機能を備えています。
//FTPD PROC MODULE='FTPD',PARMS='TRACE'
//FTPD EXEC PGM=&MODULE,REGION=7M,TIME=NOLIMIT,
// PARM=('POSIX(ON) ALL31(ON)',
// 'ENVAR("_BPXK_SETIBMOPT_TRANSPORT=TCPIPOE")',
// '/&PARMS')
//CEEDUMP DD SYSOUT=*
//SYSFTSX DD DISP=SHR,DSN=TCPV34.STANDARD.TCPXLBIN
パラメーター・ステートメントで、スラッシュ (/) の前に指定されたパラメーターは、すべて XL C/C++ ランタイム・ライブラリーによって 処理されます。FTPD プログラムに 渡すパラメーターは、スラッシュ (/) の後になければなりません。 また、この例では、パラメーターが 1 行には入りきらないため、3 行にまたがって分割 されていることにも注意してください。
//INETD PROC
//************************************************************
//INETD EXEC PGM=BPXBATCH,
//* PARM='PGM /usr/sbin/inetd -d /etc/inetd.conf'
// PARM='PGM /usr/sbin/inetd //''USER1.INETD.CONF'''
//* PARM='PGM /usr/sbin/inetd //''SYS1.TCPPARMS(INETDCNF)'''
//*
//STDERR DD PATH='/tmp/inetd.debug.stderr',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHMODE=SIRWXU
//STDOUT DD PATH='/tmp/inetd.debug.stdout',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHMODE=SIRWXU
//STDENV DD DISP=SHR,DSN=USER1.INETD.ENVIRON
//*STDENV DD DISP=SHR,DSN=SYS1.TCPPARMS(INETDENV)
_BPXK_SETIBMOPT_TRANSPORT=TCPIPOE
これらの例では、INETD もその構成ファイルをパラメーターとして渡されています。この例では、このファイルは z/OS UNIX ファイルではなく、MVS データ・セットであるため、例で示しているように、追加のダブルスラッシュ (//) と引用符が必要です。
一般サーバー以外のサーバーや z/OS UNIX 以外 のアプリケーション、またはその両方に関して指定しても、効果はまったくありません。
EDC8011I A name of a PFS was specified that either is
not configured or is not a Sockets PFS.
EDC5112I Resource temporarily unavailable.