BIND2ADDRSEL コール
BIND2ADDRSEL コールは、入力宛先 IP アドレスとの通信用にスタックにより選択されるローカル IP アドレスに、ソケットをバインドします。
スタックがパケットをリモート・ホストに送信する前に、スタックにより割り当てられたローカル IP アドレスが、IPV6_ADDR_PREFERENCES ソケット・オプションにより指定されたアドレス選択基準に適合していることを、アプリケーションで検証する必要がある場合は、BIND2ADDRSEL コールを使用します。TCP アプリケーションまたは UDP アプリケーションでは、BIND2ADDRSEL コールは通常、オプション IPV6_ADDR_PREFERENCES が指定された SETSOCKOPT コールの後、およびリモート・ホストとの通信の前に実行されます。
結果: スタックは、アプリケーションの設定に応じて、ローカル IP アドレスの選択を試みます。ただし、BIND2ADDRSEL コールが成功しても、すべてのソース IP アドレスの選択設定が満たされたとは限りません。
- ソケットがバインドされる前、およびソケットの暗黙的なバインドが許可される前に、ソース IP アドレスの選択設定を示す IPV6_ADDR_PREFERENCES オプションを設定するには、SETSOCKOPT コールを使用します。
結果: CONNECT コール、SENDTO コール、または SENDMSG コールの発行時に、BIND コールまたは BIND2ADDRSEL コールによってソケットがローカル IP アドレスに明示的にバインドされていない場合、暗黙的なバインドが行われます。スタックは、アウトバウンド・パケットに使用するローカル IP アドレスを選択します。
要件: アプリケーションがストリーム・ソケットを使用しており、ソケットでローカル IP アドレスが IPV6_ADDR_PREFERENCES オプションに指定された値に一致していることが検証される前に、SYN などのあらゆるパケットがスタックからリモート・ホストに送信されないようにするには、ソケットをローカル IP アドレスに暗黙的にバインドする CONNECT コールを許可しないでください。その代わり、ソケットを BIND2ADDRSEL コールでバインドし、INET6_IS_SRCADDR コールで割り当てられたローカル IP アドレスをテストします。割り当てられたローカル IP アドレスが要件を満たしている場合、CONNECT コールを使用してリモート・ホストと通信を確立できます。
- BIND2ADDRSEL コールが正常に発行されたら、GETSOCKNAME コールを使用してソケットにバインドされたローカル IP アドレスを取得します。ローカル IP アドレスを取得したら、INET6_IS_SRCADDR コールを使用してローカル IP アドレスがアドレス選択基準に適合していることを検証します。
| 要件 | 説明 |
|---|---|
| 許可: | 監視プログラム状態または問題プログラム状態、すべての PSW キー |
| ディスパッチ可能単位モード: | 作業 |
| 仮想記憶間モード: | PASN = HASN |
| Amode: | 31 ビットまたは 24 ビット |
| ASC モード: | 1 次アドレス・スペース制御 (ASC) モード |
| 割り込み状況: | 割り込み可能 |
| ロック: | アンロック状態 |
| 制御パラメーター: | すべてのパラメーターが呼び出し元でアドレス可能で、1 次アドレス・スペースに入っている必要がある |
図 1 は、BIND2ADDRSEL コール命令の例を示しています。
WORKING-STORAGE SECTION.
01 SOC-FUNCTION PIC X(16) VALUE IS 'BIND2ADDRSEL'.
01 S PIC 9(4) BINARY.
*IPv6 socket address structure.
01 NAME.
03 FAMILY PIC 9(4) BINARY.
03 PORT PIC 9(4) BINARY.
03 FLOWINFO PIC 9(8) BINARY.
03 IP-ADDRESS.
10 FILLER PIC 9(16) BINARY.
10 FILLER PIC 9(16) BINARY.
03 SCOPE-ID PIC 9(8) BINARY.
01 ERRNO PIC 9(8) BINARY.
01 RETCODE PIC S9(8) BINARY.
PROCEDURE DIVISION.
CALL 'EZASOKET' USING SOC-FUNCTION S NAME ERRNO RETCODE.
相当する PL/I およびアセンブラー言語の宣言については、パラメーター記述の変換を参照してください。