inet6_opt_append() - 長さ「len」、桁合わせ「align」のオプションの追加

標準

標準/拡張機能 C/C++ 依存項目

RFC3542

両方 z/OS® V1R7

形式

#define _OPEN_SYS_SOCK_IPV6
#include <netinet/in.h>

int inet6_opt_append(void *extbuf, socklen_t extlen, int offset,
                     uint8_t type, socklen_t len, uint8_t align,
                     void **databufp);

機能説明

inet6_opt_append() は、長さ len、桁合わせ align のオプションを追加した後の更新された全長を戻します。extbuf が NULL 以外の場合は、必要な埋め込みを挿入し、タイプと長さのフィールドを設定します。 その後、databufp 内にあるオプション内容の場所へのポインターが戻されます。

offset は、inet6_opt_init()、または直前の inet6_opt_append() から戻された長さであることが必要です。type は 8 ビットのオプション・タイプ、len はオプション・データの長さ (オプション・タイプとオプションの長さのフィールドを除く) です。

戻り値

正常に実行された場合、inet6_opt_append() は拡張ヘッダーの更新された全長を戻します。

失敗した場合は、-1 が戻され、errno は次のいずれかに設定されます。

次のいずれかが当てはまる場合は EINVAL

  • extbuf が NULL で、extlen がゼロ以外。
  • extbuf が NULL 以外で、extlen が正の 8 の倍数でない。
  • offset が空の拡張ヘッダーのサイズより小さい。
  • type が無効 (PAD オプションのいずれかを指定している)。
  • len が 0 より小さいか 255 より大きい。
  • align が 1、2、4、または 8 でない。
  • alignlen より大きい。
  • 新しく更新された全長が extlen を超える (extbuf が NULL 以外)。
  • databufp が NULL (extbuf が NULL 以外)。

使用上の注意

  1. オプション type の値は、2 から 255 までであることが必要です (0 と 1 は Pad1 オプションと PadN オプション用に予約済み)。
  2. オプション・データ長の値は、0 から 255 までであることが必要です (値 0 と 255 を含む)。 これは、後続のオプション・データの長さです。
  3. align パラメーターの値は 1、2、4、または 8 であることが必要で、len の値を超えてはなりません。
  4. inet6_opt_append() が呼び出された後、アプリケーションは databufp を直接使用することもでき、また inet6_opt_set_val() を使用してオプションの内容を指定することもできます。

関連情報