OSDN Git Service

(split) LDP: Update drafts from PO files
[linuxjm/LDP_man-pages.git] / draft / man7 / netlink.7
index 185533c..84db9e9 100644 (file)
-'\" 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.
+.\" t
+.\" 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 $
+.\"*******************************************************************
 .\"
-.\" 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
+.\" This file was generated with po4a. Translate the source file.
 .\"
-.\"WORD                payload         ペイロード
-.\"WORD                capability      権限
-.\"
-.TH NETLINK  7 2008-11-11 "Linux" "Linux Programmer's Manual"
-.\"O .SH NAME
+.\"*******************************************************************
+.TH NETLINK 7 2013\-03\-15 Linux "Linux Programmer's Manual"
 .SH 名前
-.\"O netlink \- Communication between kernel and userspace (AF_NETLINK)
 netlink \- カーネルとユーザー空間の通信 (AF_NETLINK)
-.\"O .SH SYNOPSIS
 .SH 書式
 .nf
-.B #include <asm/types.h>
-.B #include <sys/socket.h>
-.B #include <linux/netlink.h>
+\fB#include <asm/types.h>\fP
+\fB#include <sys/socket.h>\fP
+\fB#include <linux/netlink.h>\fP
 
-.BI "netlink_socket = socket(AF_NETLINK, " socket_type ", " netlink_family );
+\fBnetlink_socket = socket(AF_NETLINK, \fP\fIsocket_type\fP\fB, \fP\fInetlink_family\fP\fB);\fP
 .fi
-.\"O .SH DESCRIPTION
 .SH 説明
-.\"O Netlink is used to transfer information between kernel and
-.\"O userspace processes.
-.\"O It consists of a standard sockets-based interface for userspace
-.\"O processes and an internal kernel API for kernel modules.
-.\"O The internal kernel interface is not documented in this manual page.
-.\"O There is also an obsolete netlink interface
-.\"O via netlink character devices; this interface is not documented here
-.\"O and is only provided for backward compatibility.
-netlink はカーネルモジュールとユーザー空間のプロセス間で
-情報をやりとりするために用いられる。
-netlink は、ユーザープロセスに対しては
-標準的なソケットベースのインターフェースを、
-カーネルモジュールにはカーネルの内部 API を提供する。
-カーネル内部のインターフェースについてはこの man ページでは記述しない。
-また、netlink キャラクタデバイスを用いた
-obsolete な netlink インターフェースもあるが、これもこの文書では解説しない。
-これは単に過去互換性のために用意されているものにすぎない。
-
-.\"O Netlink is a datagram-oriented service.
-.\"O Both
-.\"O .B SOCK_RAW
-.\"O and
-.\"O .B SOCK_DGRAM
-.\"O are valid values for
-.\"O .IR socket_type .
-.\"O However, the netlink protocol does not distinguish between datagram
-.\"O and raw sockets.
-netlink はデータグラム指向のサービスである。
-.I socket_type
-には
-.B SOCK_RAW
-と
-.B SOCK_DGRAM
-の両方とも指定可能である。
-しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
-
-.\"O .I netlink_family
-.\"O selects the kernel module or netlink group to communicate with.
-.\"O The currently assigned netlink families are:
-.I netlink_family
-は、通信するカーネルモジュールや netlink グループの選択に用いる。
-現在割り当てられている netlink ファミリーは以下の通り。
-.TP
-.B NETLINK_ROUTE
-.\"O Receives routing and link updates and may be used to modify the routing
-.\"O tables (both IPv4 and IPv6), IP addresses, link parameters,
-.\"O neighbor setups, queueing disciplines, traffic classes and
-.\"O packet classifiers (see
-.\"O .BR rtnetlink (7)).
-ルーティングとリンクの更新を受信する。
-(IPv4 と IPv6 両方の) ルーティングテーブル・
-IP アドレス・リンクパラメータ・近傍設定 (neighbor setup)・
-キューイングルール (queueing dicipline)・トラフィッククラス・
-パケットのクラス分類の修正に用いることができるだろう
-.RB ( rtnetlink (7)
-を見よ)。
-.TP
-.B NETLINK_W1
-.\"O Messages from 1-wire subsystem.
-単線 (1-wire) のサブシステムからのメッセージ。
-.TP
-.B NETLINK_USERSOCK
-.\"O Reserved for user-mode socket protocols.
+netlink はカーネルモジュールとユーザー空間のプロセス間で 情報をやりとりするために用いられる。 netlink は、ユーザープロセスに対しては
+標準的なソケットベースのインターフェースを、 カーネルモジュールにはカーネルの内部 API を提供する。 カーネル内部のインターフェースについてはこの
+man ページでは記述しない。 また、netlink キャラクタデバイスを用いた obsolete な netlink
+インターフェースもあるが、これもこの文書では解説しない。 これは過去互換性のためだけに用意されている。
+
+netlink はデータグラム指向のサービスである。 \fIsocket_type\fP には \fBSOCK_RAW\fP と \fBSOCK_DGRAM\fP
+の両方とも指定可能である。 しかし netlink プロトコルはデータグラムと raw ソケットの区別をしない。
+
+\fInetlink_family\fP は、通信するカーネルモジュールや netlink グループの選択に用いる。 現在割り当てられている netlink
+ファミリーは以下の通り。
+.TP 
+\fBNETLINK_ROUTE\fP
+ルーティングとリンクの更新を受信する。 (IPv4 と IPv6 両方の) ルーティングテーブル・ IP アドレス・リンクパラメータ・近傍設定
+(neighbor setup)・ キューイングルール (queueing dicipline)・トラフィッククラス・
+パケットのクラス分類の修正に用いることができるだろう (\fBrtnetlink\fP(7)  を見よ)。
+.TP 
+\fBNETLINK_W1\fP
+単線 (1\-wire) のサブシステムからのメッセージ。
+.TP 
+\fBNETLINK_USERSOCK\fP
 ユーザーモードソケットプロトコルのために予約されている。
-.TP
-.B NETLINK_FIREWALL
-.\"O Transport IPv4 packets from netfilter to userspace.
-.\"O Used by
-.\"O .I ip_queue
-.\"O kernel module.
-IPv4 パケットを netfilter からユーザー空間へ転送する。
-.I ip_queue
-カーネルモジュールで使用される。
-.TP
-.B NETLINK_INET_DIAG
+.TP 
+\fBNETLINK_FIREWALL\fP
+IPv4 パケットを netfilter からユーザー空間へ転送する。 \fIip_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_INET_DIAG\fP
 .\" FIXME More details on NETLINK_INET_DIAG needed.
-.\"O INET socket monitoring.
 INET ソケットをモニタリングする。
-.TP
-.B NETLINK_NFLOG
+.TP 
+\fBNETLINK_NFLOG\fP
 Netfilter/iptables ULOG.
-.TP
-.B NETLINK_XFRM
+.TP 
+\fBNETLINK_XFRM\fP
 .\" FIXME More details on NETLINK_XFRM needed.
 IPsec.
-.TP
-.B NETLINK_SELINUX
-.\"O SELinux event notifications.
+.TP 
+\fBNETLINK_SELINUX\fP
 SELinux のイベント通知。
-.TP
-.B NETLINK_ISCSI
+.TP 
+\fBNETLINK_ISCSI\fP
 .\" FIXME More details on NETLINK_ISCSI needed.
-Open-iSCSI.
-.TP
-.B NETLINK_AUDIT
+Open\-iSCSI.
+.TP 
+\fBNETLINK_AUDIT\fP
 .\" FIXME More details on NETLINK_AUDIT needed.
-.\"O Auditing.
 監査 (audit) を行う。
-.TP
-.B NETLINK_FIB_LOOKUP
+.TP 
+\fBNETLINK_FIB_LOOKUP\fP
 .\" FIXME More details on NETLINK_FIB_LOOKUP needed.
-.\"O Access to FIB lookup from userspace.
 ユーザー空間から FIB ルックアップにアクセスする。
-.TP
-.B NETLINK_CONNECTOR
-.\"O Kernel connector.
-.\"O See
-.\"O .I Documentation/connector/*
-.\"O in the kernel source for further information.
-カーネルコネクタ。
-より詳しい情報はカーネルソースの
-.I Documentation/connector/*
-を参照すること。
-.TP
-.B NETLINK_NETFILTER
+.TP 
+\fBNETLINK_CONNECTOR\fP
+カーネルコネクタ。より詳しい情報は Linux カーネルソースの \fIDocumentation/connector/*\fP を参照すること。
+.TP 
+\fBNETLINK_NETFILTER\fP
 .\" FIXME More details on NETLINK_NETFILTER needed.
-.\"O Netfilter subsystem.
 netfilter サブシステム。
-.TP
-.B NETLINK_IP6_FW
-.\"O Transport IPv6 packets from netfilter to userspace.
-.\"O Used by
-.\"O .I ip6_queue
-.\"O kernel module.
-IPv6 パケットを netfilter からユーザー空間へ転送する。
-.I ip6_queue
-カーネルモジュールで使用される。
-.TP
-.B NETLINK_DNRTMSG
-.\"O DECnet routing messages.
+.TP 
+\fBNETLINK_IP6_FW\fP
+IPv6 パケットを netfilter からユーザー空間へ転送する。 \fIip6_queue\fP カーネルモジュールで使用される。
+.TP 
+\fBNETLINK_DNRTMSG\fP
 DECnet ルーティングメッセージ。
-.TP
-.B NETLINK_KOBJECT_UEVENT
+.TP 
+\fBNETLINK_KOBJECT_UEVENT\fP
 .\" FIXME More details on NETLINK_KOBJECT_UEVENT needed.
-.\"O Kernel messages to userspace.
 ユーザー空間へのカーネルメッセージ
-.TP
-.B NETLINK_GENERIC
-.\"O Generic netlink family for simplified netlink usage.
+.TP 
+\fBNETLINK_GENERIC\fP
 netlink を簡単に使用するための一般的な netlink ファミリー。
 .PP
-.\"O Netlink messages consist of a byte stream with one or multiple
-.\"O .I nlmsghdr
-.\"O headers and associated payload.
-netlink メッセージはバイトストリームからなり、
-一つ以上の
-.I nlmsghdr
-ヘッダと、それに対応するペイロード (payload) が含まれる。
-.\"O The byte stream should only be accessed with the standard
-.\"O .B NLMSG_*
-.\"O macros.
-.\"O See
-.\"O .BR netlink (3)
-.\"O for further information.
-バイトストリームには、標準の
-.B NLMSG_*
-マクロによってのみアクセスすべきである。
-より詳しい情報は
-.BR netlink (3)
+netlink メッセージはバイトストリームからなり、 一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロード (payload)
+が含まれる。 バイトストリームには、標準の \fBNLMSG_*\fP マクロによってのみアクセスすべきである。 より詳しい情報は \fBnetlink\fP(3)
 を見よ。
 
-.\"O In multipart messages (multiple
-.\"O .I nlmsghdr
-.\"O headers with associated payload in one byte stream) the first and all
-.\"O following headers have the
-.\"O .B NLM_F_MULTI
-.\"O flag set, except for the last header which has the type
-.\"O .BR NLMSG_DONE .
-マルチパートメッセージ (一つ以上の
-.I nlmsghdr
-ヘッダと、それに対応するペイロードが
-一つバイトストリームに含まれる) においては、
-先頭のヘッダ・後続のヘッダには
-.B NLM_F_MULTI
-フラグがセットされる。ただし最後のヘッダだけは例外で、
-.B NLMSG_DONE
+マルチパートメッセージ (一つ以上の \fInlmsghdr\fP ヘッダと、それに対応するペイロードが 一つバイトストリームに含まれる) においては、
+先頭のヘッダ・後続のヘッダには \fBNLM_F_MULTI\fP フラグがセットされる。ただし最後のヘッダだけは例外で、 \fBNLMSG_DONE\fP
 タイプとなる。
 
-.\"O After each
-.\"O .I nlmsghdr
-.\"O the payload follows.
-それぞれの
-.B nlmsghdr
-の後にはペイロードが続く。
+それぞれの \fBnlmsghdr\fP の後にはペイロードが続く。
 
 .in +4n
 .nf
 struct nlmsghdr {
-.\"O     __u32 nlmsg_len;    /* Length of message including header. */
-.\"O     __u16 nlmsg_type;   /* Type of message content. */
-.\"O     __u16 nlmsg_flags;  /* Additional flags. */
-.\"O     __u32 nlmsg_seq;    /* Sequence number. */
-.\"O     __u32 nlmsg_pid;    /* PID of the sending process. */
     __u32 nlmsg_len;    /* ヘッダを含むメッセージの長さ */
     __u16 nlmsg_type;   /* メッセージの内容のタイプ */
     __u16 nlmsg_flags;  /* 追加フラグ */
     __u32 nlmsg_seq;    /* シーケンス番号 */
-    __u32 nlmsg_pid;    /* 送信プロセスの PID */
+    __u32 nlmsg_pid;    /* 送信者のポート ID */
 };
 .fi
 .in
 
-.\"O .I nlmsg_type
-.\"O can be one of the standard message types:
-.\"O .B NLMSG_NOOP
-.\"O message is to be ignored,
-.\"O .B NLMSG_ERROR
-.\"O message signals an error and the payload contains an
-.\"O .I nlmsgerr
-.\"O structure,
-.\"O .B NLMSG_DONE
-.\"O message terminates a multipart message.
-.I nlmsg_type
-は標準のメッセージタイプのどれか一つである:
-.B NLMSG_NOOP
-メッセージは無視される。
-.B NLMSG_ERROR
-メッセージはエラーを示し、ペイロードには
-.I nlmsgerr
-構造体が入る。
-.B NLMSG_DONE
+\fInlmsg_type\fP は標準のメッセージタイプのどれか一つである: \fBNLMSG_NOOP\fP メッセージは無視される。
+\fBNLMSG_ERROR\fP メッセージはエラーを示し、ペイロードには \fInlmsgerr\fP 構造体が入る。 \fBNLMSG_DONE\fP
 メッセージはマルチパートメッセージの終了を伝える。
 
 .in +4n
 .nf
 struct nlmsgerr {
-.\"O     int error;        /* Negative errno or 0 for acknowledgements */
-.\"O     struct nlmsghdr msg;  /* Message header that caused the error */
     int error;        /* 負または 0 の errno は応答を表す */
     struct nlmsghdr msg;  /* エラーを起こしたメッセージのヘッダ */
 };
 .fi
 .in
 
-.\"O A netlink family usually specifies more message types, see the
-.\"O appropriate manual pages for that, for example,
-.\"O .BR rtnetlink (7)
-.\"O for
-.\"O .BR NETLINK_ROUTE .
-ある netlink ファミリーで指定できるメッセージタイプは、
-通常もっと多い。これらに関しては適切な man ページを見てほしい。
-たとえば
-.B NETLINK_ROUTE
-に関しては
-.BR rtnetlink (7)
-に書いてある。
-
-.\"O Standard flag bits in
-.\"O .I nlmsg_flags
-.I nlmsg_flags
-の標準フラグビット
-.br
----------------------------------
+ある netlink ファミリーで指定できるメッセージタイプは、 通常もっと多い。これらに関しては適切な man ページを見てほしい。 たとえば
+\fBNETLINK_ROUTE\fP に関しては \fBrtnetlink\fP(7)  に書いてある。
 .TS
 tab(:);
+l s
 lB l.
-.\"O NLM_F_REQUEST:Must be set on all request messages.
-.\"O NLM_F_MULTI:T{
-.\"O The message is part of a multipart message terminated by
-.\"O .BR NLMSG_DONE .
-.\"O T}
-.\"O NLM_F_ACK:Request for an acknowledgment on success.
-.\"O NLM_F_ECHO:Echo this request.
+\fInlmsg_flags\fP の標準フラグビット
+_
 NLM_F_REQUEST:要求メッセージ全てでセットされなければならない。
 NLM_F_MULTI:T{
 このメッセージはマルチパートメッセージの一部である。
-マルチパートメッセージは
-.B NLMSG_DONE
-で終端する。
+マルチパートメッセージは \fBNLMSG_DONE\fP で終端する。
 T}
 NLM_F_ACK:成功した場合の応答を要求する。
 NLM_F_ECHO:この要求をエコーする。
 .TE
-
-.\"O Additional flag bits for GET requests
-GET 要求における追加フラグビット
-.br
--------------------------------------
+.ad
+.sp 1
+.\" No right adjustment for text blocks in tables
+.na
 .TS
 tab(:);
+l s
 lB l.
-.\"O NLM_F_ROOT:Return the complete table instead of a single entry.
-.\"O NLM_F_MATCH:T{
-.\"O Return all entries matching criteria passed in message content.
-.\"O Not implemented yet.
-.\"O T}
-.\" FIXME NLM_F_ATOMIC is not used any more?
-.\"O NLM_F_ATOMIC:Return an atomic snapshot of the table.
-.\"O NLM_F_DUMP:Convenience macro; equivalent to (NLM_F_ROOT|NLM_F_MATCH).
+GET 要求における追加フラグビット
+_
 NLM_F_ROOT:単一のエントリではなくテーブル全体を返す。
 NLM_F_MATCH:T{
-メッセージの内容で渡された基準 (criteria) にマッチする
-全てのエントリを返す。
+メッセージの内容で渡された基準 (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
-
-.\"O Note that
-.\"O .B NLM_F_ATOMIC
-.\"O requires the
-.\"O .B CAP_NET_ADMIN
-.\"O capability or an effective UID of 0.
-.B NLM_F_ATOMIC
-を使う場合は、
-.B CAP_NET_ADMIN
-権限を持つか実効ユーザー ID が 0 でなければならない点に注意すること。
-
-.\"O Additional flag bits for NEW requests
-NEW 要求における追加フラグビット
-.br
--------------------------------------
+.ad
+.sp 1
+\fBNLM_F_ATOMIC\fP を使う場合は、 \fBCAP_NET_ADMIN\fP 権限を持つか実効ユーザー ID が 0
+でなければならない点に注意すること。
+.na
 .TS
 tab(:);
+l s
 lB l.
-.\"O NLM_F_REPLACE:Replace existing matching object.
-.\"O NLM_F_EXCL:Don't replace if the object already exists.
-.\"O NLM_F_CREATE:Create object if it doesn't already exist.
-.\"O NLM_F_APPEND:Add to the end of the object list.
+NEW 要求における追加フラグビット
+_
 NLM_F_REPLACE:現存のオブジェクトを置換する。
 NLM_F_EXCL:すでにオブジェクトがあったら置換しない。
 NLM_F_CREATE:まだオブジェクトがなければ作成する。
 NLM_F_APPEND:オブジェクトリストの最後に追加する。
 .TE
-
-.\"O .I nlmsg_seq
-.\"O and
-.\"O .I nlmsg_pid
-.\"O are used to track messages.
-.I nlmsg_seq
-と
-.I nlmsg_pid
-はメッセージの追跡に使用される。
-.\"O .I nlmsg_pid
-.\"O shows the origin of the message.
-.I nlmsg_pid
-はメッセージの送信元を表す。
-.\"O Note that there isn't a 1:1 relationship between
-.\"O .I nlmsg_pid
-.\"O and the PID of the process if the message originated from a netlink
-.\"O socket.
-メッセージが netlink ソケットで送信されている場合、
-.I nlmsg_pid
-とプロセスの PID は 1:1 の関係ではない点に注意すること。
-.\"O See the
-.\"O .B ADDRESS FORMATS
-.\"O section for further information.
-より詳しい情報は、
-.RB 「 アドレスのフォーマット 」
-のセクションを参照すること。
-
-.\"O Both
-.\"O .I nlmsg_seq
-.\"O and
-.\"O .I nlmsg_pid
-.\"O .\" FIXME Explain more about nlmsg_seq and nlmsg_pid.
-.\"O are opaque to netlink core.
-.I nlmsg_seq
-と
-.I nlmsg_pid
-は netlink のコアには見えない (opaque)。
-
-.\"O Netlink is not a reliable protocol.
-netlink は信頼性の高いプロトコルではない。
-.\"O It tries its best to deliver a message to its destination(s),
-.\"O but may drop messages when an out-of-memory condition or
-.\"O other error occurs.
-.\"O For reliable transfer the sender can request an
-.\"O acknowledgement from the receiver by setting the
-.\"O .B NLM_F_ACK
-.\"O flag.
-.\"O An acknowledgment is an
-.\"O .B NLMSG_ERROR
-.\"O packet with the error field set to 0.
-netlink はメッセージを行き先に届けるために最善を尽くすが、
-メモリが足りなかったりエラーが起こったりすると
-メッセージを取りこぼすこともある。
-信頼性の高い転送を行いたいときは、
-送信者は受信者に応答を要求することもできる。
-これには
-.B NLM_F_ACK
-フラグをセットする。
-応答は
-.B NLMSG_ERROR
-パケットのエラーフィールドを 0 にしたものになる。
-.\"O The application must generate acknowledgements for
-.\"O received messages itself.
-.\"O The kernel tries to send an
-.\"O .B NLMSG_ERROR
-.\"O message for every failed packet.
-アプリケーションは自分自身のメッセージを受けたときには、
-応答を生成しなければならない。
-カーネルは失敗したパケットに対して、
-.B NLMSG_ERROR
-メッセージを送ろうとする。
-.\"O A user process should follow this convention too.
-ユーザープロセスはこの慣習にも従う必要がある。
-
-.\"O However, reliable transmissions from kernel to user are impossible
-.\"O in any case.
-しかし、どのような場合でもカーネルからユーザーへの
-信頼性の高い転送は不可能である。
-.\"O The kernel can't send a netlink message if the socket buffer is full:
-.\"O the message will be dropped and the kernel and the userspace process will
-.\"O no longer have the same view of kernel state.
-ソケットバッファが満杯の場合、カーネルは netlink メッセージを送信できない。
-メッセージは取りこぼされて、カーネルとユーザー空間プロセスは、
-カーネルの状態についての同じビューを持つことができなくなる。
-.\"O It is up to the application to detect when this happens (via the
-.\"O .B ENOBUFS
-.\"O error returned by
-.\"O .BR recvmsg (2))
-.\"O and resynchronize.
-これが起こったこと
-.RB ( recvmsg (2)
-によって
-.B ENOBUFS
-エラーが返される) を検知して再び同期させるのは、
+.ad
+.sp 1
+\fInlmsg_seq\fP と \fInlmsg_pid\fP はメッセージの追跡に使用される。 \fInlmsg_pid\fP はメッセージの送信元を表す。
+メッセージが netlink ソケットで送信されている場合、 \fInlmsg_pid\fP とプロセスの PID は 1:1
+の関係ではない点に注意すること。 より詳しい情報は、 「\fBアドレスのフォーマット\fP」 のセクションを参照すること。
+
+.\" FIXME Explain more about nlmsg_seq and nlmsg_pid.
+\fInlmsg_seq\fP と \fInlmsg_pid\fP は netlink のコアには見えない (opaque)。
+
+netlink は信頼性の高いプロトコルではない。 netlink はメッセージを行き先に届けるために最善を尽くすが、
+メモリが足りなかったりエラーが起こったりすると メッセージを取りこぼすこともある。 信頼性の高い転送を行いたいときは、
+送信者は受信者に応答を要求することもできる。 これには \fBNLM_F_ACK\fP フラグをセットする。 応答は \fBNLMSG_ERROR\fP
+パケットのエラーフィールドを 0 にしたものになる。 アプリケーションは自分自身のメッセージを受けたときには、 応答を生成しなければならない。
+カーネルは失敗したパケットに対して、 \fBNLMSG_ERROR\fP メッセージを送ろうとする。 ユーザープロセスはこの慣習にも従う必要がある。
+
+しかし、どのような場合でもカーネルからユーザーへの 信頼性の高い転送は不可能である。 ソケットバッファが満杯の場合、カーネルは netlink
+メッセージを送信できない。 メッセージは取りこぼされて、カーネルとユーザー空間プロセスは、 カーネルの状態についての同じビューを持つことができなくなる。
+これが起こったこと (\fBrecvmsg\fP(2)  によって \fBENOBUFS\fP エラーが返される) を検知して再び同期させるのは、
 アプリケーションの責任である。
-.\"O .SS Address Formats
 .SS アドレスのフォーマット
-.\"O The
-.\"O .I sockaddr_nl
-.\"O structure describes a netlink client in user space or in the kernel.
-.\"O A
-.\"O .I sockaddr_nl
-.\"O can be either unicast (only sent to one peer) or sent to
-.\"O netlink multicast groups
-.\"O .RI ( nl_groups
-.\"O not equal 0).
-.I sockaddr_nl
-構造体はユーザー空間やカーネル空間で netlink クライアントを記述する。
-.I sockaddr_nl
-はユニキャスト (単一の接続先にだけ送られる) にもできるし、
-netlink マルチキャストグループ
-.RI ( nl_groups
-が 0 でない場合) にも送ることができる。
+\fIsockaddr_nl\fP 構造体はユーザー空間やカーネル空間で netlink クライアントを記述する。 \fIsockaddr_nl\fP
+はユニキャスト (単一の接続先にだけ送られる) にもできるし、 netlink マルチキャストグループ (\fInl_groups\fP が 0 でない場合)
+にも送ることができる。
 
 .in +4n
 .nf
 struct sockaddr_nl {
-.\"O     sa_family_t     nl_family;  /* AF_NETLINK */
-.\"O     unsigned short  nl_pad;     /* Zero. */
-.\"O     pid_t           nl_pid;     /* Process ID. */
-.\"O     __u32           nl_groups;  /* Multicast groups mask. */
     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
 .in
 
-.\"O .I nl_pid
-.\"O is the unicast address of netlink socket.
-.\"O It's always 0 if the destination is in the kernel.
-.I nl_pid
-は netlink ソケットのユニキャストアドレスである。
-行き先がカーネルの場合は、常に 0 である。
-.\"O For a userspace process,
-.\"O .I nl_pid
-.\"O is usually the PID of the process owning the destination socket.
-ユーザー空間プロセスの場合、通常は
-.I nl_pid
-は行き先のソケットを所有しているプロセスの PID である。
-.\"O However,
-.\"O .I nl_pid
-.\"O identifies a netlink socket, not a process.
-ただし、
-.I nl_pid
-はプロセスではなく netlink ソケットを同定する。
-.\"O If a process owns several netlink
-.\"O sockets, then
-.\"O .I nl_pid
-.\"O can only be equal to the process ID for at most one socket.
-プロセスが複数の netlink ソケットを所有する場合、
-.I nl_pid
-は最大でも一つのソケットのプロセス ID としか等しくならない。
-.\"O There are two ways to assign
-.\"O .I nl_pid
-.\"O to a netlink socket.
-.I nl_pid
-を netlink ソケットに割り当てる方法は 2 つある。
-.\"O If the application sets
-.\"O .I nl_pid
-.\"O before calling
-.\"O .BR bind (2),
-.\"O then it is up to the application to make sure that
-.\"O .I nl_pid
-.\"O is unique.
-アプリケーションが
-.BR bind (2)
-を呼ぶ前に
-.I nl_pid
-を設定する場合、
-.I nl_pid
-が一意であることを確認するのはアプリケーションの責任となる。
-.\"O If the application sets it to 0, the kernel takes care of assigning it.
-アプリケーションが
-.I nl_pid
-を 0 に設定した場合、カーネルがこの値を割り当てる。
-.\"O The kernel assigns the process ID to the first netlink socket the process
-.\"O opens and assigns a unique
-.\"O .I nl_pid
-.\"O to every netlink socket that the process subsequently creates.
-カーネルはプロセスが最初にオープンした
-netlink ソケットに対してプロセス ID を割り当て、
-それ以降にプロセスが作成した全ての netlink ソケットにも一意な
-.I nl_pid
-を割り当てる。
-
-.\"O .I nl_groups
-.\"O is a bit mask with every bit representing a netlink group number.
-.I nl_groups
-はビットマスクで、すべてのビットが netlink グループ番号を表す。
-.\"O Each netlink family has a set of 32 multicast groups.
+\fInl_pid\fP は netlink ソケットのユニキャストアドレスである。 行き先がカーネルの場合は、常に 0 である。
+ユーザー空間プロセスの場合、通常は \fInl_pid\fP は行き先のソケットを所有しているプロセスの PID である。 ただし、 \fInl_pid\fP
+はプロセスではなく netlink ソケットを同定する。 プロセスが複数の netlink ソケットを所有する場合、 \fInl_pid\fP
+は最大でも一つのソケットのプロセス ID としか等しくならない。 \fInl_pid\fP を netlink ソケットに割り当てる方法は 2 つある。
+アプリケーションが \fBbind\fP(2)  を呼ぶ前に \fInl_pid\fP を設定する場合、 \fInl_pid\fP
+が一意であることを確認するのはアプリケーションの責任となる。 アプリケーションが \fInl_pid\fP を 0
+に設定した場合、カーネルがこの値を割り当てる。 カーネルはプロセスが最初にオープンした netlink ソケットに対してプロセス ID を割り当て、
+それ以降にプロセスが作成した全ての netlink ソケットにも一意な \fInl_pid\fP を割り当てる。
+
+.\" commit d629b836d151d43332492651dd841d32e57ebe3b
+\fInl_groups\fP はビットマスクで、すべてのビットが netlink グループ番号を表す。
 それぞれの netlink ファミリーは 32 のマルチキャストグループのセットを持つ。
-.\"O When
-.\"O .BR bind (2)
-.\"O is called on the socket, the
-.\"O .I nl_groups
-.\"O field in the
-.\"O .I sockaddr_nl
-.\"O should be set to a bit mask of the groups which it wishes to listen to.
-それぞれの netlink ファミリーは 32 のマルチキャストグループの
-セットを持つ。
-.BR bind (2)
-がソケットに対して呼ばれると、
-.I sockaddr_nl
-の
-.I nl_groups
+それぞれの netlink ファミリーは 32 のマルチキャストグループの セットを持つ。
+\fBbind\fP(2) がソケットに対して呼ばれると、 \fIsockaddr_nl\fP の \fInl_groups\fP
 フィールドには listen したいグループのビットマスクがセットされる。
-.\"O The default value for this field is zero which means that no multicasts
-.\"O will be received.
-.\"O A socket may multicast messages to any of the multicast groups by setting
-.\"O .I nl_groups
-.\"O to a bit mask of the groups it wishes to send to when it calls
-.\"O .BR sendmsg (2)
-.\"O or does a
-.\"O .BR connect (2).
 デフォルトの値は 0 で、マルチキャストを一切受信しない。
-.BR sendmsg (2)
-や
-.BR connect (2)
-によって、あるソケットからメッセージをマルチキャストしたいときは、
-.I nl_groups
-に送信したいグループのビットマスクをセットすればよい。
-.\"O Only processes with an effective UID of 0 or the
-.\"O .B CAP_NET_ADMIN
-.\"O capability may send or listen to a netlink multicast group.
-実効ユーザー ID が 0 か、
-.B CAP_NET_ADMIN
-権限を持つユーザーのみが netlink マルチキャストグループに
-送信したり、これを listen したりすることができる。
-.\"O Any replies to a message received for a multicast group should be
-.\"O sent back to the sending PID and the multicast group.
+\fBsendmsg\fP(2) や \fBconnect\fP(2) によって、あるソケットからメッセージを
+マルチキャストしたいときは、 \fInl_groups\fP に送信したいグループのビットマスク
+をセットすればよい。
+netlink マルチキャストグループに送信したり、これを listen したりできるのは、
+実効ユーザー ID が 0 のプロセスか、 \fBCAP_NET_ADMIN\fP 権限を持つプロセスのみである。
+Linux 2.6.13 以降では、メッセージを複数のグループへのブロードキャストすることはできない。
 マルチキャストグループ向けメッセージを受信した場合、これ対する応答は
 送り主の PID とマルチキャストグループとに送り返すべきである。
-.\"O .SH VERSIONS
+さらに、Linux のカーネルサブシステムによっては、
+他のユーザもメッセージの送受信ができる場合がある。
+Linux 3.0 の時点では、
+\fBNETLINK_KOBJECT_UEVENT\fP, \fBNETLINK_GENERIC\fP, \fBNETLINK_ROUTE\fP,
+\fBNETLINK_SELINUX\fP グループでは他のユーザがメッセージを受信することができる。
+他のユーザがメッセージを送信できるグループは存在しない。
 .SH バージョン
-.\"O The socket interface to netlink is a new feature of Linux 2.2.
 netlink へのソケットインターフェースは Linux 2.2 の新機能である。
 
-.\"O Linux 2.0 supported a more primitive device-based netlink interface
-.\"O (which is still available as a compatibility option).
-.\"O This obsolete interface is not described here.
-Linux 2.0 は、もっと原始的なデバイスベースの netlink インターフェースを
-サポートしていた (これも互換性のために今でも使用できる)。
+Linux 2.0 は、もっと原始的なデバイスベースの netlink インターフェースを サポートしていた (これも互換性のために今でも使用できる)。
 古いインターフェースに関してはここでは記述しない。
 
-.\"O NETLINK_SELINUX appeared in Linux 2.6.4.
 NETLINK_SELINUX は Linux 2.6.4 で登場した。
 
-.\"O NETLINK_AUDIT appeared in Linux 2.6.6.
 NETLINK_AUDIT は Linux 2.6.6 で登場した。
 
-.\"O NETLINK_KOBJECT_UEVENT appeared in Linux 2.6.10.
 NETLINK_KOBJECT_UEVENT は Linux 2.6.10 で登場した。
 
-.\"O NETLINK_W1 and NETLINK_FIB_LOOKUP appeared in Linux 2.6.13.
 NETLINK_W1, NETLINK_FIB_LOOKUP は Linux 2.6.13 で登場した。
 
-.\"O NETLINK_INET_DIAG, NETLINK_CONNECTOR and NETLINK_NETFILTER appeared in
-.\"O Linux 2.6.14.
-NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER は
-Linux 2.6.14 で登場した。
+NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER は Linux 2.6.14
+で登場した。
 
-.\"O NETLINK_GENERIC and NETLINK_ISCSI appeared in Linux 2.6.15.
 NETLINK_GENERIC, NETLINK_ISCSI は Linux 2.6.15 で登場した。
-.\"O .SH NOTES
 .SH 注意
-.\"O It is often better to use netlink via
-.\"O .I libnetlink
-.\"O or
-.\"O .I libnl
-.\"O than via the low-level kernel interface.
-低レベルのカーネルインターフェースより、
-.I libnetlink
-または
-.I libnl
-を通して netlink を利用するほうが良いことが多い。
-.\"O .SH BUGS
-.\"O This manual page is not complete.
+低レベルのカーネルインターフェースより、 \fIlibnetlink\fP または \fIlibnl\fP を通して netlink
+を利用するほうが良いことが多い。
 .SH バグ
 この man ページは完成していない。
-.\"O .SH EXAMPLE
 .SH 例
-.\"O The following example creates a
-.\"O .B NETLINK_ROUTE
-.\"O netlink socket which will listen to the
-.\"O .B RTMGRP_LINK
-.\"O (network interface create/delete/up/down events) and
-.\"O .B RTMGRP_IPV4_IFADDR
-.\"O (IPv4 addresses add/delete events) multicast groups.
-以下の例では、
-.B RTMGRP_LINK
-(ネットワークインターフェースの create/delete/up/down イベント) と
-.B RTMGRP_IPV4_IFADDR
-(IPv4 アドレスの add/delete イベント) マルチキャストグループを listen する
-.B NETLINK_ROUTE
-netlink を作成している。
+以下の例では、 \fBRTMGRP_LINK\fP (ネットワークインターフェースの create/delete/up/down イベント) と
+\fBRTMGRP_IPV4_IFADDR\fP (IPv4 アドレスの add/delete イベント) マルチキャストグループを listen する
+\fBNETLINK_ROUTE\fP netlink を作成している。
 
 .in +4n
 .nf
@@ -664,28 +290,21 @@ bind(fd, (struct sockaddr *) &sa, sizeof(sa));
 .fi
 .in
 
-.\"O The next example demonstrates how to send a netlink message to the
-.\"O kernel (pid 0).
-.\"O Note that application must take care of message sequence numbers
-.\"O in order to reliably track acknowledgements.
-次の例では、netlink メッセージをカーネル (pid 0) に送る方法を示している。
-応答を追跡する際の信頼性を高めるために、アプリケーションが
+次の例では、netlink メッセージをカーネル (pid 0) に送る方法を示している。 応答を追跡する際の信頼性を高めるために、アプリケーションが
 メッセージのシーケンス番号を正しく処理しなければならない点に注意すること。
 
 .in +4n
 .nf
-.\"O struct nlmsghdr *nh;    /* The nlmsghdr with payload to send. */
 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;
 nh\->nlmsg_seq = ++sequence_number;
-.\"O /* Request an ack from kernel by setting NLM_F_ACK. */
 /* NLM_F_ACK を設定することで、カーネルに応答を要求する */
 nh\->nlmsg_flags |= NLM_F_ACK;
 
@@ -693,7 +312,6 @@ sendmsg(fd, &msg, 0);
 .fi
 .in
 
-.\"O And the last example is about reading netlink message.
 最後は、netlink メッセージの読み込みの例である。
 
 .in +4n
@@ -705,42 +323,37 @@ struct sockaddr_nl sa;
 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);
      nh = NLMSG_NEXT (nh, len)) {
-.\"O     /* The end of multipart message. */
     /* マルチパートメッセージの終わり */
     if (nh\->nlmsg_type == NLMSG_DONE)
         return;
 
     if (nh\->nlmsg_type == NLMSG_ERROR)
-.\"O         /* Do some error handling. */
         /* 何らかのエラー処理を行う */
     ...
 
-.\"O     /* Continue with parsing payload. */
     /* ペイロードの解析を続ける */
     ...
 }
 .fi
 .in
-.\"O .SH SEE ALSO
 .SH 関連項目
-.BR cmsg (3),
-.BR netlink (3),
-.BR capabilities (7),
-.BR rtnetlink (7)
-.PP
-.\"O ftp://ftp.inr.ac.ru/ip-routing/iproute2*
-.\"O for information about libnetlink.
-libnetlink に関する情報は
-ftp://ftp.inr.ac.ru/ip-routing/iproute2*
+\fBcmsg\fP(3), \fBnetlink\fP(3), \fBcapabilities\fP(7), \fBrtnetlink\fP(7)
+
+.UR ftp://ftp.inr.ac.ru\:/ip\-routing\:/iproute2*
+libnetlink に関する情報
+.UE
 
-.\"O http://people.suug.ch/~tgr/libnl/
-.\"O for information about libnl.
-libnl に関する情報は
-http://people.suug.ch/~tgr/libnl/
+.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.51 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。