OSDN Git Service

Retire LDP man-pages repository
[linuxjm/LDP_man-pages.git] / draft / man3 / cmsg.3
diff --git a/draft/man3/cmsg.3 b/draft/man3/cmsg.3
deleted file mode 100644 (file)
index 79f526b..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
-.\"
-.\" %%%LICENSE_START(VERBATIM_ONE_PARA)
-.\" Permission is granted to distribute possibly modified copies
-.\" of this page provided the header is included verbatim,
-.\" and in case of nontrivial modification author and date
-.\" of the modification is added to the header.
-.\" %%%LICENSE_END
-.\"
-.\" $Id: cmsg.3,v 1.8 2000/12/20 18:10:31 ak Exp $
-.\"*******************************************************************
-.\"
-.\" This file was generated with po4a. Translate the source file.
-.\"
-.\"*******************************************************************
-.\"
-.\" Japanese Version Copyright (c) 1999 Shouichi Saito
-.\"    all rights reserved.
-.\" Translated Mon Jul 26 21:58:26 JST 1999
-.\"    by Shouichi Saito <ss236rx@ymg.urban.ne.jp>
-.\" Proofed Tue Aug 17 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
-.\"
-.TH CMSG 3 2014\-12\-31 Linux "Linux Programmer's Manual"
-.SH 名前
-CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR \- 補助データにアクセスする。
-.SH 書式
-\fB#include <sys/socket.h>\fP
-.sp
-\fBstruct cmsghdr *CMSG_FIRSTHDR(struct msghdr *\fP\fImsgh\fP\fB);\fP
-.br
-\fBstruct cmsghdr *CMSG_NXTHDR(struct msghdr *\fP\fImsgh\fP\fB, struct cmsghdr
-*\fP\fIcmsg\fP\fB);\fP
-.br
-\fBsize_t CMSG_ALIGN(size_t \fP\fIlength\fP\fB);\fP
-.br
-\fBsize_t CMSG_SPACE(size_t \fP\fIlength\fP\fB);\fP
-.br
-\fBsize_t CMSG_LEN(size_t \fP\fIlength\fP\fB);\fP
-.br
-\fBunsigned char *CMSG_DATA(struct cmsghdr *\fP\fIcmsg\fP\fB);\fP
-.sp
-.nf
-struct cmsghdr {
-    socklen_t cmsg_len;    /* data byte count, including header */
-    int       cmsg_level;  /* originating protocol */
-    int       cmsg_type;   /* protocol\-specific type */
-    /* followed by unsigned char cmsg_data[]; */
-};
-.fi
-.SH 説明
-これらのマクロは制御メッセージ (補助データ (ancillary data) とも呼ばれる) を作り、 それにアクセスするために使われる。
-制御メッセージはソケットにのるデータではない。 この制御情報は、到着したパケットへのインターフェイス、様々なあまり
-使われないヘッダーフィールド、エラー記述の拡張、ファイルデスクリ プタの集合や、UNIXにおける信頼情報 (credential) を含んでいる。
-制御メッセージは、例えば IP オプションのような追加ヘッダーフィールドを 送るのに使う事ができる。 補助データは、 \fBsendmsg\fP(2)
-を呼び出して送り、 \fBrecvmsg\fP(2)  を呼び出して受け取る。 詳細はそれらのマニュアルページを参照。
-.PP
-補助データは \fIstruct cmsghdr\fP 構造体のシーケンスに追加データが付加されたものである。
-このシーケンスにはこのマニュアルページに書かれている マクロを使ってアクセスすべきで、直接アクセスすべきではない。
-使用可能な制御メッセージのタイプについては、 それぞれのプロトコルのマニュアルページを参照のこと。 接続毎の最大補助用バッファーサイズは
-\fI/proc/sys/net/core/optmem_max\fP を使って設定できる。 \fBsocket\fP(7)  を参照。
-.PP
-\fBCMSG_FIRSTHDR\fP()  は、渡した \fImsghdr\fP に関連した補助データバッファー中の、最初の \fIcmsghdr\fP
-へのポインターを返す。
-.PP
-\fBCMSG_NXTHDR\fP()  は、渡した \fIcmsghdr\fP の次にくる (有効な)  \fIcmsghdr\fP を返す。
-バッファーに十分な空きが無い場合、NULL を返す。
-.PP
-\fBCMSG_ALIGN\fP()  に長さを与えると、必要なアラインメントを加味した長さを返してくる。 これは定数式である。
-.PP
-\fBCMSG_SPACE\fP()  は、与えたデータ長が占めるのに必要な補助要素 (ancillary element) の
-バイト数を返す。これは定数式である。
-.PP
-\fBCMSG_DATA\fP()  は、 \fIcmsghdr\fP のデータ部分へのポインターを返す。
-.PP
-\fBCMSG_LEN\fP()  は、 \fIcmsghdr\fP 構造体の \fIcmsg_len\fP
-メンバにデータを格納する際に必要な値を返す。アラインメントも考慮に入れ られる。 引数としてデータ長をとる。これは定数式である。
-.PP
-補助データを作るためには最初に \fImsghdr\fP のメンバー \fImsg_controllen\fP を、制御メッセージバッファーの長さで初期化する。
-\fBCMSG_FIRSTHDR\fP()  を \fImsghdr\fP に用いると最初の制御メッセージが得られ、 \fBCMSG_NXTHDR\fP()
-を使うと次の制御メッセージが得られる。 それぞれの制御メッセージでは、 \fIcmsg_len\fP を初期化する (\fBCMSG_LEN\fP()  を使う)。
-その他の \fIcmsghdr\fP ヘッダーフィールド、そしてデータ部分に対しても \fBCMSG_DATA\fP()  を使って初期化をする。 最後に
-\fImsghdr\fP の \fImsg_controllen\fP フィールドに、バッファー中の制御メッセージの長さの \fBCMSG_SPACE\fP()
-の合計がセットされる。 \fImsghdr\fP についての詳細は \fBrecvmsg\fP(2)  を参照。
-.PP
-制御メッセージバッファーが全てのメッセージを納めるのには短すぎる場合、 \fImsghdr\fP の \fImsg_flags\fP メンバーに
-\fBMSG_CTRUNC\fP フラグがセットされる。
-.SH 準拠
-この補助データモデルは、POSIX.1g draft, 4.4BSD\-Lite, RFC\ 2292 に 記述されている IPv6 advanced
-API, そして SUSv2 に準拠している。 \fBCMSG_ALIGN\fP()  は Linux の拡張である。
-.SH 注意
-移植性のために、補助データへのアクセスには、 ここで述べられているマクロだけを使うべきである。 \fBCMSG_ALIGN\fP()  は Linux
-での拡張であり、移植性を考えたプログラムでは使うべきではない。
-.PP
-Linux では \fBCMSG_LEN\fP(), \fBCMSG_DATA\fP(), \fBCMSG_ALIGN\fP()  は定数式である
-(それらの引数が定数とみなされる)。 このことは、大域変数のサイズを宣言するのに使える。 しかし移植性はなくなるだろう。
-.SH 例
-次のコードは、受け取った補助バッファーから \fBIP_TTL\fP オプションを探すものである。
-.PP
-.in +4n
-.nf
-struct msghdr msgh;
-struct cmsghdr *cmsg;
-int *ttlptr;
-int received_ttl;
-
-/* Receive auxiliary data in msgh */
-for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;
-        cmsg = CMSG_NXTHDR(&msgh,cmsg)) {
-    if (cmsg\->cmsg_level == IPPROTO_IP
-            && cmsg\->cmsg_type == IP_TTL) {
-        ttlptr = (int *) CMSG_DATA(cmsg);
-        received_ttl = *ttlptr;
-        break;
-    }
-}
-if (cmsg == NULL) {
-    /*
-     * Error: IP_TTL not enabled or small buffer
-     * or I/O error.
-     */
-}
-.fi
-.in
-.PP
-以下のコードは、 \fBSCM_RIGHTS\fP を使い、ファイルディスクリプターの配列を UNIX ドメインソケットを通して送るものである。
-.PP
-.in +4n
-.nf
-struct msghdr msg = {0};
-struct cmsghdr *cmsg;
-int myfds[NUM_FD]; /* Contains the file descriptors to pass. */
-union {
-    /* ancillary data buffer, wrapped in a union in order to ensure it is
-       suitably aligned */
-    char buf[CMSG_SPACE(sizeof myfds)];
-    struct cmsghdr align;
-} u;
-int *fdptr;
-
-msg.msg_control = u.buf;
-msg.msg_controllen = sizeof u.buf;
-cmsg = CMSG_FIRSTHDR(&msg);
-cmsg\->cmsg_level = SOL_SOCKET;
-cmsg\->cmsg_type = SCM_RIGHTS;
-cmsg\->cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD);
-/* Initialize the payload: */
-fdptr = (int *) CMSG_DATA(cmsg);
-memcpy(fdptr, myfds, NUM_FD * sizeof(int));
-/* Sum of the length of all control messages in the buffer: */
-msg.msg_controllen = cmsg\->cmsg_len;
-.fi
-.in
-.SH 関連項目
-\fBrecvmsg\fP(2), \fBsendmsg\fP(2)
-.PP
-RFC\ 2292
-.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
-である。プロジェクトの説明とバグ報告に関する情報は
-http://www.kernel.org/doc/man\-pages/ に書かれている。