.\" t
-.\" Don't change the first line, it tells man that tbl is needed.
-.\" This man page is Copyright (c) 1998 by Andi Kleen. Subject to the GPL.
+.\" This man page is Copyright (c) 1998 by Andi Kleen.
+.\"
+.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
+.\" Subject to the GPL.
+.\" %%%LICENSE_END
+.\"
.\" Based on the original comments from Alexey Kuznetsov
.\" Modified 2005-12-27 by Hasso Tepper <hasso@estpak.ee>
.\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
-.TH NETLINK 7 2012\-04\-14 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
+.\" Translated 1999-12-06 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
+.\" Updated 2001-04-04 by Yuichi SATO <ysato@h4.dion.ne.jp>, catch up to LDP v1.35
+.\" Updated 2006-06-23 by Yuichi SATO <ysato444@yahoo.co.jp>, catch up to LDP v2.29
+.\"
+.TH NETLINK 7 2013\-03\-15 Linux "Linux Programmer's Manual"
.SH 名前
netlink \- カーネルとユーザー空間の通信 (AF_NETLINK)
.SH 書式
netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては
標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供する。 カーネル内部のインターフェースについてはこの
man ページでは記述しない。 また、netlink キャラクタデバイスを用いた obsolete な netlink
-インターフェースもあるが、これもこの文書では解説しない。 これは単に過去互換性のために用意されているものにすぎない。
+インターフェースもあるが、これもこの文書では解説しない。 これは過去互換性のためだけに用意されている。
netlink はデータグラム指向のサービスである。 \fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP
の両方とも指定可能である。 しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
ユーザー空間から FIB ルックアップにアクセスする。
.TP
\fBNETLINK_CONNECTOR\fP
-カーネルコネクタ。 より詳しい情報はカーネルソースの \fIDocumentation/connector/*\fP を参照すること。
+カーネルコネクタ。より詳しい情報は Linux カーネルソースの \fIDocumentation/connector/*\fP を参照すること。
.TP
\fBNETLINK_NETFILTER\fP
.\" FIXME More details on NETLINK_NETFILTER needed.
__u16 nlmsg_type; /* メッセージの内容のタイプ */
__u16 nlmsg_flags; /* 追加フラグ */
__u32 nlmsg_seq; /* シーケンス番号 */
- __u32 nlmsg_pid; /* 送信プロセスの PID */
+ __u32 nlmsg_pid; /* 送信者のポート ID */
};
.fi
.in
ある netlink ファミリーで指定できるメッセージタイプは、 通常もっと多い。これらに関しては適切な man ページを見てほしい。 たとえば
\fBNETLINK_ROUTE\fP に関しては \fBrtnetlink\fP(7) に書いてある。
-
-\fInlmsg_flags\fP の標準フラグビット
-.br
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.TS
tab(:);
+l s
lB l.
+\fInlmsg_flags\fP の標準フラグビット
+_
NLM_F_REQUEST:要求メッセージ全てでセットされなければならない。
NLM_F_MULTI:T{
このメッセージはマルチパートメッセージの一部である。
NLM_F_ACK:成功した場合の応答を要求する。
NLM_F_ECHO:この要求をエコーする。
.TE
-
-GET 要求における追加フラグビット
-.br
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+.ad
+.sp 1
+.\" No right adjustment for text blocks in tables
+.na
.TS
tab(:);
+l s
lB l.
+GET 要求における追加フラグビット
+_
NLM_F_ROOT:単一のエントリではなくテーブル全体を返す。
NLM_F_MATCH:T{
メッセージの内容で渡された基準 (criteria) にマッチする全てのエントリを返す。
T}
.\" FIXME NLM_F_ATOMIC is not used any more?
NLM_F_ATOMIC:テーブルのアトミックなスナップショットを返す。
-NLM_F_DUMP:便利なマクロ。(NLM_F_ROOT|NLM_F_MATCH) と同じ。
+NLM_F_DUMP:T{
+便利なマクロ。(NLM_F_ROOT|NLM_F_MATCH) と同じ。
+T}
.TE
-
+.ad
+.sp 1
\fBNLM_F_ATOMIC\fP を使う場合は、 \fBCAP_NET_ADMIN\fP 権限を持つか実効ユーザー ID が 0
でなければならない点に注意すること。
-
-NEW 要求における追加フラグビット
-.br
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+.na
.TS
tab(:);
+l s
lB l.
+NEW 要求における追加フラグビット
+_
NLM_F_REPLACE:現存のオブジェクトを置換する。
NLM_F_EXCL:すでにオブジェクトがあったら置換しない。
NLM_F_CREATE:まだオブジェクトがなければ作成する。
NLM_F_APPEND:オブジェクトリストの最後に追加する。
.TE
-
+.ad
+.sp 1
\fInlmsg_seq\fP と \fInlmsg_pid\fP はメッセージの追跡に使用される。 \fInlmsg_pid\fP はメッセージの送信元を表す。
メッセージが netlink ソケットで送信されている場合、 \fInlmsg_pid\fP とプロセスの PID は 1:1
の関係ではない点に注意すること。 より詳しい情報は、 「\fBアドレスのフォーマット\fP」 のセクションを参照すること。
struct sockaddr_nl {
sa_family_t nl_family; /* AF_NETLINK */
unsigned short nl_pad; /* 0 である */
- pid_t nl_pid; /* ã\83\97ã\83ã\82»ã\82¹ ID */
+ pid_t nl_pid; /* ã\83\9dã\83¼ã\83\88 ID */
__u32 nl_groups; /* マルチキャストグループマスク */
};
.fi
に設定した場合、カーネルがこの値を割り当てる。 カーネルはプロセスが最初にオープンした netlink ソケットに対してプロセス ID を割り当て、
それ以降にプロセスが作成した全ての netlink ソケットにも一意な \fInl_pid\fP を割り当てる。
+.\" commit d629b836d151d43332492651dd841d32e57ebe3b
\fInl_groups\fP はビットマスクで、すべてのビットが netlink グループ番号を表す。
それぞれの netlink ファミリーは 32 のマルチキャストグループのセットを持つ。
それぞれの netlink ファミリーは 32 のマルチキャストグループの セットを持つ。
\fBsendmsg\fP(2) や \fBconnect\fP(2) によって、あるソケットからメッセージを
マルチキャストしたいときは、 \fInl_groups\fP に送信したいグループのビットマスク
をセットすればよい。
-実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP 権限を持つユーザーのみが netlink
-マルチキャストグループに 送信したり、これを listen したりすることができる。
+netlink マルチキャストグループに送信したり、これを listen したりできるのは、
+実効ユーザー ID が 0 のプロセスか、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスのみである。
+Linux 2.6.13 以降では、メッセージを複数のグループへのブロードキャストすることはできない。
マルチキャストグループ向けメッセージを受信した場合、これ対する応答は
送り主の PID とマルチキャストグループとに送り返すべきである。
さらに、Linux のカーネルサブシステムによっては、
.nf
struct nlmsghdr *nh; /* 送信する nlmsghdr とペイロード */
struct sockaddr_nl sa;
-struct iovec iov = { (void *) nh, nh\->nlmsg_len };
+struct iovec iov = { nh, nh\->nlmsg_len };
struct msghdr msg;
-msg = { (void *)&sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
+msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
memset(&sa, 0, sizeof(sa));
sa.nl_family = AF_NETLINK;
nh\->nlmsg_pid = 0;
struct msghdr msg;
struct nlmsghdr *nh;
-msg = { (void *)&sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
+msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
len = recvmsg(fd, &msg, 0);
for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);
.in
.SH 関連項目
\fBcmsg\fP(3), \fBnetlink\fP(3), \fBcapabilities\fP(7), \fBrtnetlink\fP(7)
-.PP
-libnetlink に関する情報は ftp://ftp.inr.ac.ru/ip\-routing/iproute2*
-libnl に関する情報は http://people.suug.ch/~tgr/libnl/
+.UR ftp://ftp.inr.ac.ru\:/ip\-routing\:/iproute2*
+libnetlink に関する情報
+.UE
+
+.UR http://people.suug.ch\:/~tgr\:/libnl/
+libnl に関する情報
+.UE
RFC 3549 "Linux Netlink as an IP Services Protocol"
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。