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

sctp_sendmsg()

ssize_t sctp_sendmsg(int s, const void *msg, size_t len, const struct sockaddr *to, socklen_t tolen, uint32_t ppid, uint32_t flags, uint16_t stream_no, uint32_t timetolive, uint32_t context);

sctp_sendmsg() 関数は、SCTP 終端からメッセージを送信する際の拡張 SCTP 機能を有効にします。

s

この値は、メッセージを送信する SCTP 終端を指定します。

msg

この値は、sctp_sendmsg() 関数によって送信されるメッセージです。

len

この値は、メッセージの長さで、バイト単位で表されます。

to

この値は、メッセージの着信先アドレスです。

tolen

この値は、着信先アドレスの長さです。

ppid

この値は、アプリケーション固有のペイロードプロトコル識別子です。

stream_no

この値は、メッセージのターゲットストリームです。

timetolive

この値は、メッセージが正常にピアに送信されなかった場合に期限切れになるまでの期間で、ミリ秒単位で示されます。

context

メッセージの送信時にエラーが発生した場合に、この値が返されます。

flags

この値は、0 以上の次のフラグビットに対するビット単位の論理和演算を実行することによって求められます。

MSG_UNORDERED

このフラグが設定されている場合 sctp_sendmsg() 関数はメッセージを順不同で配信します。

MSG_ADDR_OVER

このフラグが設定されている場合、sctp_sendmsg() 関数は関連付けのプライマリ着信先アドレスではなく、to パラメータのアドレスを使用します。このフラグは 1 対多スタイル SCTP ソケットの場合にのみ使用されます。

MSG_ABORT

このフラグが設定されている場合、指定された関連付けは ABORT シグナルをピアに送信して異常終了します。このフラグは 1 対多スタイル SCTP ソケットの場合にのみ使用されます。

MSG_EOF

このフラグが設定されている場合、指定された関連付けは適切に終了します。このフラグは 1 対多スタイル SCTP ソケットの場合にのみ使用されます。

MSG_PR_SCTP

このフラグが設定されている場合、timetolive パラメータに指定された期間内に伝送が正常に完了しないメッセージは期限切れになります。

sctp_sendmsg() 関数は、送信したバイト数を返します。エラーが発生した場合、sctp_sendmsg() 関数は -1 を返します。

s パラメータに渡されたファイル記述子が有効でない場合、sctp_sendmsg() 関数は失敗して errno の値を EBADF に設定します。s パラメータの渡されたファイル記述子がソケットでない場合、sctp_sendmsg() 関数は失敗して errno の値を ENOTSOCK に設定します。flags パラメータに値 MSG_OOB が含まれる場合、sctp_sendmsg() 関数は失敗して errno の値を EOPNOTSUPP に設定します。1 対 1 スタイルソケットで flags パラメータに値 MSG_ABORT または MSG_EOF が含まれる場合、sctp_sendmsg() 関数は失敗して errno の値を EOPNOTSUPP に設定します。関連付けが確立していない場合、sctp_sendmsg() 関数は失敗して errno の値を ENOTCONN に設定します。ソケットが停止していてそれ以上の書込みができない場合、sctp_sendmsg() 関数は失敗して errno の値を EPIPE に設定します。ソケットが非ブロックで、伝送待ち行列がいっぱいである場合、sctp_sendmsg() 関数は失敗して errno の値を EAGAIN に設定します。

制御メッセージ長が不正である場合、sctp_sendmsg() 関数は失敗して errno の値を EINVAL に設定します。指定された着信先アドレスが関連付けに属さない場合、sctp_sendmsg() 関数は失敗して errno の値を EINVAL に設定します。stream_no の値が関連付けによってサポートされる発信ストリームの数以外である場合、sctp_sendmsg() 関数は失敗して errno の値を EINVAL に設定します。指定された着信先アドレスのアドレス群が AF_INET または AF_INET6 でない場合、sctp_sendmsg() 関数は失敗して errno の値を EINVAL に設定します。