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

sctp_getladdrs()

sctp_getladdrs() 関数は、ソケット上のローカルでバインドされているすべてのアドレスを返します。sctp_getladdrs() 関数の構文は次のとおりです。

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

sctp_getladdrs() 関数が正常に結果を返した場合、addrs の値は動的に割り当てられるパックされた配列の sockaddr 構造体を指します。sockaddr 構造体は各ローカルアドレスの適切なタイプです。呼び出し元アプリケーションは、sctp_freeladdrs() 関数を使用してメモリーを解放します。addrs パラメータの値が NULL であってはなりません。

sd パラメータによって参照されるソケットが IPv4 ソケットである場合、sctp_getladdrs() 関数は IPv4 アドレスを返します。sd パラメータによって参照されるソケットが IPv6 ソケットである場合、sctp_getladdrs() 関数は必要に応じて IPv4 アドレスと IPv6 アドレスを混在して返します。

1 対多スタイルソケットで sctp_getladdrs() 関数が起動されると、id パラメータは照会する関連付けを指定します。1 対 1 ソケットで sctp_getladdrs() 関数で動作する場合、id パラメータは無視されます。

id パラメータの値が 0 である場合、sctp_getladdrs() 関数は特定の関連付けに関係なくローカルでバインドされているアドレスを返します。sctp_getladdrs() 関数が正常に結果を返す場合、ソケットにバインドされているローカルアドレスの数を報告します。ソケットがバインドされていない場合、sctp_getladdrs() 関数は 0 を返し、*addrs の値は未定義です。エラーが発生した場合、sctp_getladdrs() 関数は -1 を返し、*addrs パラメータの値は未定義です。