プログラミングインタフェース

sctp_getpaddrs()

sctp_getpaddrs() 関数は、関連付け内のすべてのピアを返します。

int sctp_getpaddrs(int sock, sctp_assoc_t id, void **addrs);

sctp_getpaddrs() 関数が正常に結果を返した場合、**addrs パラメータの値は、動的に割り当てられるパックされた配列である、各アドレスの適切なタイプの sockaddr 構造体を指します。呼び出し元スレッドは、sctp_freepaddrs() 関数によってメモリーを解放します。**addrs パラメータに値 NULL はありません。sock に指定されるソケット記述子が IPv4 ソケット用である場合、sctp_getpaddrs() 関数は IPv4 アドレスを返します。sock に指定されるソケット記述子が IPv6 ソケット用である場合、sctp_getpaddrs() 関数は IPv4 アドレスと IPv6 アドレスを混在して返します。1 対多スタイルソケットの場合、id パラメータは照会する関連付けを指定します。1 対 1 スタイルソケットの場合、sctp_getpaddrs() 関数は id パラメータを無視します。sctp_getpaddrs() 関数が正常に結果を返す場合、関連付け内のピアアドレスの数が返されます。ソケット上に関連付けがない場合、sctp_getpaddrs() 関数は 0 を返し、**addrs パラメータの値は未定義です。エラーが発生した場合、sctp_getpaddrs() 関数は -1 を返し、**addrs パラメータの値は未定義です。

sctp_getpaddrs() に渡される sock パラメータのファイル記述子が無効である場合、sctp_getpaddrs() 関数は失敗して EBADF を返します。sctp_getpaddrs() 関数に渡される sock パラメータのファイル記述子がソケットでない場合、sctp_getpaddrs() 関数は失敗して ENOTSOCK を返します。sctp_getpaddrs() 関数に渡される sock パラメータのファイル記述子が接続されていないソケットである場合、sctp_getpaddrs() 関数は失敗して ENOTCONN を返します。