OSDN Git Service

(split) LDP: Update drafts from PO files
[linuxjm/LDP_man-pages.git] / draft / man7 / rtnetlink.7
1 .\" t
2 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
3 .\"
4 .\" %%%LICENSE_START(VERBATIM_ONE_PARA)
5 .\" Permission is granted to distribute possibly modified copies
6 .\" of this page provided the header is included verbatim,
7 .\" and in case of nontrivial modification author and date
8 .\" of the modification is added to the header.
9 .\" %%%LICENSE_END
10 .\"
11 .\" Based on the original comments from Alexey Kuznetsov, written with
12 .\" help from Matthew Wilcox.
13 .\" $Id: rtnetlink.7,v 1.8 2000/01/22 01:55:04 freitag Exp $
14 .\"
15 .\"*******************************************************************
16 .\"
17 .\" This file was generated with po4a. Translate the source file.
18 .\"
19 .\"*******************************************************************
20 .TH RTNETLINK 7 2013\-03\-05 Linux "Linux Programmer's Manual"
21 .SH 名前
22 rtnetlink \- Linux IPv4 ルーティングソケット
23 .SH 書式
24 \fB#include <asm/types.h>\fP
25 .br
26 \fB#include <linux/netlink.h>\fP
27 .br
28 \fB#include <linux/rtnetlink.h>\fP
29 .br
30 \fB#include <sys/socket.h>\fP
31 .sp
32 \fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB,
33 NETLINK_ROUTE);\fP
34 .SH 説明
35 .\" FIXME ? all these macros could be moved to rtnetlink(3)
36 \fBrtnetlink\fP はカーネルのルーティングテーブルを読んだり変更したり するためのものである。これはカーネルが内部のサブシステムと
37 通信するためにも用いられているが、それはここでは記述しない。 この man ページではユーザー空間のプログラムとの通信に関してのみ述べる。
38 ネットワーク経路・IP アドレス・リンクパラメータ・ 近傍設定 (neighbor setup)・キューイングルール (queueing
39 dicipline)・ トラフィッククラス・パケットのクラス分類などが、すべて \fBNETLINK_ROUTE\fP ソケットを通して制御できる。
40 \fBrtnetlink\fP は netlink メッセージをベースにしている。詳細は \fBnetlink\fP(7)  を見ること。
41 .SS ルーティング属性
42 rtnetlink メッセージには、初期ヘッダの後に付加的な属性を 持つものがある。
43
44 .in +4n
45 .nf
46 struct rtattr {
47     unsigned short rta_len;    /* Length of option */
48     unsigned short rta_type;   /* Type of option */
49     /* Data follows */
50 };
51 .fi
52 .in
53
54 これらの属性の操作は、 RTA_* マクロか libnetlink のみを使って行うべきである。 \fBrtnetlink\fP(3)  を見よ。
55 .SS メッセージ
56 rtnetlink は (標準的な netlink メッセージに加えて)  以下のメッセージタイプから構成される。
57 .TP 
58 \fBRTM_NEWLINK\fP, \fBRTM_DELLINK\fP, \fBRTM_GETLINK\fP
59 指定したネットワークインターフェースの情報を、生成・削除・取得する。 これらのメッセージは \fIifinfomsg\fP 構造体と、それに続いていくつかの
60 \fIrtattr\fP 構造体を伴う。
61
62 .nf
63 struct ifinfomsg {
64     unsigned char  ifi_family; /* AF_UNSPEC */
65     unsigned short ifi_type;   /* Device type */
66     int            ifi_index;  /* Interface index */
67     unsigned int   ifi_flags;  /* Device flags  */
68     unsigned int   ifi_change; /* change mask */
69 };
70 .fi
71
72 .\" FIXME ifi_type
73 \fIifi_flags\fP はデバイスのフラグである。 \fBnetdevice\fP(7) を参照。 \fIifi_index\fP
74 は他と重ならないインターフェースの index である (Linux 3.7 以降では、 \fBRTMGRP_LINK\fP メッセージで 0
75 以外の値を指定することができ、そのため指定した \fIifindex\fP でリンクを作成できる)。 \fIifi_change\fP
76 は将来の利用のために予約されており、常に 0xFFFFFFFF にセットすべきである。
77 .na
78 .TS
79 tab(:);
80 c s s
81 l l l.
82 ルーティング属性
83 rta_type:値の型:説明
84 _
85 IFLA_UNSPEC:\-:指定されていない。
86 IFLA_ADDRESS:hardware address:インターフェース L2 アドレス
87 IFLA_BROADCAST:hardware address:L2 ブロードキャストアドレス
88 IFLA_IFNAME:asciiz string:デバイス名
89 IFLA_MTU:unsigned int:デバイスの MTU
90 IFLA_LINK:int:リンクタイプ
91 IFLA_QDISC:asciiz string:キューイングのルール
92 IFLA_STATS:T{
93 下記参照
94 T}:インターフェースの統計
95 .TE
96 .ad
97 .sp
98 \fBIFLA_STATS\fP の値の型は \fIstruct rtnl_link_stats\fP (Linux 2.4 以前では \fIstruct
99 net_device_stats\fP) である。
100 .TP 
101 \fBRTM_NEWADDR\fP, \fBRTM_DELADDR\fP, \fBRTM_GETADDR\fP
102 インターフェースの IP アドレスの情報を追加・削除・取得する。 Linux 2.2 では、一つのインターフェースに複数の IP アドレスを
103 保持させることができ、これは 2.0 の別名デバイスの概念を置き換える。 Linux 2.2 では、これらのメッセージは IPv4 と IPv6
104 の両方のアドレスをサポートしている。 これらは \fIifaddrmsg\fP 構造体を伴う。そのあとに \fIrtattr\fP
105 ルーティング属性が続くこともある。
106
107 .nf
108 struct ifaddrmsg {
109     unsigned char ifa_family;    /* Address type */
110     unsigned char ifa_prefixlen; /* Prefixlength of address */
111     unsigned char ifa_flags;     /* Address flags */
112     unsigned char ifa_scope;     /* Address scope */
113     int           ifa_index;     /* Interface index */
114 };
115 .fi
116
117 \fIifa_family\fP はアドレスファミリーのタイプである (現在は \fBAF_INET\fP または \fBAF_INET6\fP)。
118 \fIifa_prefixlen\fP はアドレスのアドレスマスクの長さである (IPv4 のように、 そのファミリーで定義されている場合)。
119 \fIifa_scope\fP はアドレスのスコープである。 \fIifa_index\fP はアドレスが関連づけられているインターフェースの index である。
120 \fIifa_flags\fP はフラグワードで、 二つめのアドレス (古い別名インターフェース) の場合は \fBIFA_F_SECONDARY\fP
121 に、永続的なアドレスの場合は \fBIFA_F_PERMANENT\fP に適用される。ユーザーによってセットされるフラグと、 undocumented
122 なフラグがある。
123 .TS
124 tab(:);
125 c s s
126 l l l.
127 属性
128 rta_type:値の型:説明
129 _
130 IFA_UNSPEC:\-:指定されていない
131 IFA_ADDRESS:raw protocol address:インターフェースアドレス
132 IFA_LOCAL:raw protocol address:ローカルアドレス
133 IFA_LABEL:asciiz string:インターフェースの名前
134 IFA_BROADCAST:raw protocol address:ブロードキャストアドレス
135 IFA_ANYCAST:raw protocol address:anycast アドレス
136 IFA_CACHEINFO:struct ifa_cacheinfo:アドレス情報
137 .TE
138 .\" FIXME struct ifa_cacheinfo
139 .TP 
140 \fBRTM_NEWROUTE\fP, \fBRTM_DELROUTE\fP, \fBRTM_GETROUTE\fP
141 ネットワーク経路の情報を生成・削除・取得する。 これらのメッセージは \fIrtmsg\fP 構造体を伴う。そのあとにいくつかの \fIrtattr\fP
142 構造体を続けることもできる。 \fBRTM_GETROUTE\fP で \fIrtm_dst_len\fP と \fIrtm_src_len\fP に 0
143 をセットすると、 指定されたルーティングテーブルの全てのエントリを所得する。 \fIrtm_table\fP と \fIrtm_protocol\fP
144 以外の他のフィールドに 0 を入れると、ワイルドカードを意味する。
145
146 .nf
147 struct rtmsg {
148     unsigned char rtm_family;   /* Address family of route */
149     unsigned char rtm_dst_len;  /* Length of destination */
150     unsigned char rtm_src_len;  /* Length of source */
151     unsigned char rtm_tos;      /* TOS filter */
152
153     unsigned char rtm_table;    /* Routing table ID */
154     unsigned char rtm_protocol; /* Routing protocol; see below */
155     unsigned char rtm_scope;    /* See below */
156     unsigned char rtm_type;     /* See below */
157
158     unsigned int  rtm_flags;
159 };
160 .fi
161 .na
162 .TS
163 tab(:);
164 l l.
165 rtm_type:経路のタイプ
166 _
167 RTN_UNSPEC:未知の経路
168 RTN_UNICAST:ゲートウェイまたはダイレクトな経路
169 RTN_LOCAL:ローカルインターフェースの経路
170 RTN_BROADCAST:T{
171 ローカルなブロードキャスト経路 (ブロードキャストとして送信される)
172 T}
173 RTN_ANYCAST:T{
174 ローカルなブロードキャスト経路 (ユニキャストとして送信される)
175 T}
176 RTN_MULTICAST:マルチキャスト経路
177 RTN_BLACKHOLE:パケットを捨てる経路
178 RTN_UNREACHABLE:到達できない行き先
179 RTN_PROHIBIT:パケットを拒否する経路
180 RTN_THROW:経路探索を別のテーブルで継続
181 RTN_NAT:ネットワークアドレスの変換ルール
182 RTN_XRESOLVE:T{
183 外部レゾルバを参照 (実装されていない)
184 T}
185 .TE
186 .ad
187 .na
188 .TS
189 tab(:);
190 l l.
191 rtm_protocol:経路の情報源
192 _
193 RTPROT_UNSPEC:不明
194 RTPROT_REDIRECT:T{
195 ICMP リダイレクトによる (現在は用いられない)
196 T}
197 RTPROT_KERNEL:カーネルによる
198 RTPROT_BOOT:ブート時
199 RTPROT_STATIC:管理者による
200 .TE
201 .ad
202
203 \fBRTPROT_STATIC\fP よりも大きな値はカーネルによって解釈されない。これは 単なるユーザーへの情報である。これらは経路情報の情報源を
204 タグ付けしたり、複数のルーティングデーモンからの情報を 区別するために用いることができる。 既に割り当てられているルーティングデーモンの識別子については
205 \fI<linux/rtnetlink.h>\fP を見よ。
206
207 \fIrtm_scope\fP は行き先への距離である。
208 .na
209 .TS
210 tab(:);
211 l l.
212 RT_SCOPE_UNIVERSE:グローバルな経路
213 RT_SCOPE_SITE:T{
214 ローカルな自律システムにおける内部経路
215 T}
216 RT_SCOPE_LINK:このリンク上の経路
217 RT_SCOPE_HOST:ローカルホスト上の経路
218 RT_SCOPE_NOWHERE:行き先が存在しない
219 .TE
220 .ad
221
222 ユーザーは \fBRT_SCOPE_UNIVERSE\fP と \fBRT_SCOPE_SITE\fP の間の値を用いることができる。
223
224 \fIrtm_flags\fP は以下の意味を持つ:
225 .na
226 .TS
227 tab(:);
228 l l.
229 RTM_F_NOTIFY:T{
230 経路が変更されると、 rtnetlink を通してユーザーに通知が行く。
231 T}
232 RTM_F_CLONED:経路は他の経路によって複製された。
233 RTM_F_EQUALIZE:マルチパスイコライザ (まだ実装されていない)
234 .TE
235 .ad
236
237 \fIrtm_table\fP ではルーティングテーブルを指定する。
238 .TS
239 tab(:);
240 l l.
241 RT_TABLE_UNSPEC:指定されていないルーティングテーブル
242 RT_TABLE_DEFAULT:デフォルトのテーブル
243 RT_TABLE_MAIN:メインのテーブル
244 RT_TABLE_LOCAL:ローカルテーブル
245 .TE
246
247 .\" Keep table on same page
248 ユーザーは \fBRT_TABLE_UNSPEC\fP と \fBRT_TABLE_DEFAULT\fP.  の間の任意の値を用いることができる。
249 .bp +1
250 .TS
251 tab(:);
252 c s s
253 l l l.
254 属性
255 rta_type:値の型:説明
256 _
257 RTA_UNSPEC:\-:無視される
258 RTA_DST:protocol address:経路の行き先アドレス
259 RTA_SRC:protocol address:経路の発信元アドレス
260 RTA_IIF:int:入力インターフェースの index
261 RTA_OIF:int:出力インターフェースの index
262 RTA_GATEWAY:protocol address:経路のゲートウェイ
263 RTA_PRIORITY:int:経路の優先度
264 RTA_PREFSRC::
265 RTA_METRICS:int:経路のメトリック
266 RTA_MULTIPATH::
267 RTA_PROTOINFO::
268 RTA_FLOW::
269 RTA_CACHEINFO::
270 .TE
271
272 \fB(これらの値を埋めること!)\fP
273 .TP 
274 \fBRTM_NEWNEIGH\fP, \fBRTM_DELNEIGH\fP, \fBRTM_GETNEIGH\fP
275 近傍テーブル (neighbor table) のエントリ (例えば ARP エントリ) の情報を追加・削除・取得する。 このメッセージは
276 \fIndmsg\fP 構造体を伴う。
277
278 .nf
279 struct ndmsg {
280     unsigned char ndm_family;
281     int           ndm_ifindex;  /* Interface index */
282     __u16         ndm_state;    /* State */
283     __u8          ndm_flags;    /* Flags */
284     __u8          ndm_type;
285 };
286
287 struct nda_cacheinfo {
288     __u32         ndm_confirmed;
289     __u32         ndm_used;
290     __u32         ndm_updated;
291     __u32         ndm_refcnt;
292 };
293 .fi
294
295 \fIndm_state\fP は以下の状態のビットマスクである:
296 .TS
297 tab(:);
298 l l.
299 NUD_INCOMPLETE:現在レゾルブ中のキャッシュエントリ
300 NUD_REACHABLE:動作確認済みのキャッシュエントリ
301 NUD_STALE:期限切れのキャッシュエントリ
302 NUD_DELAY:タイマ待ちのキャッシュエントリ
303 NUD_PROBE:再確認中のキャッシュエントリ
304 NUD_FAILED:不正なキャッシュエントリ
305 NUD_NOARP:行き先キャッシュのないデバイス
306 NUD_PERMANENT:静的なエントリ
307 .TE
308
309 有効な \fIndm_flags\fP は以下の通り:
310 .TS
311 tab(:);
312 l l.
313 NTF_PROXY:プロクシ arp エントリ
314 NTF_ROUTER:IPv6 ルータ
315 .TE
316
317 .\" FIXME
318 .\" document the members of the struct better
319 \fIrtattr\fP 構造体は、 \fIrta_type\fP フィールドに応じてそれぞれ以下の意味を持つ:
320 .TS
321 tab(:);
322 l l.
323 NDA_UNSPEC:未知のタイプ
324 NDA_DST:近傍キャッシュネットワーク層の行き先アドレス
325 NDA_LLADDR:近傍キャッシュリンク層のアドレス
326 NDA_CACHEINFO:キャッシュの統計
327 .TE
328
329 \fIrta_type\fP フィールドが \fBNDA_CACHEINFO\fP の場合には、 \fIstruct nda_cacheinfo\fP ヘッダが続く。
330 .TP 
331 \fBRTM_NEWRULE\fP, \fBRTM_DELRULE\fP, \fBRTM_GETRULE\fP
332 ルーティングルールを追加・削除・取得する。 \fIstruct rtmsg\fP を伴う。
333 .TP 
334 \fBRTM_NEWQDISC\fP, \fBRTM_DELQDISC\fP, \fBRTM_GETQDISC\fP
335 キューイングルールを追加・削除・取得する。 このメッセージは \fIstruct tcmsg\fP を伴い、またそのあとに属性がいくつか続くこともある。
336
337 .nf
338 struct tcmsg {
339     unsigned char    tcm_family;
340     int              tcm_ifindex;   /* interface index */
341     __u32            tcm_handle;    /* Qdisc handle */
342     __u32            tcm_parent;    /* Parent qdisc */
343     __u32            tcm_info;
344 };
345 .fi
346 .TS
347 tab(:);
348 c s s
349 l2 l2 l.
350 属性
351 rta_type:値の型:説明
352 _
353 TCA_UNSPEC:\-:指定されていない
354 TCA_KIND:asciiz string:キューイングルールの名前
355 TCA_OPTIONS:byte sequence:Qdisc 特有のオプションが続く
356 TCA_STATS:struct tc_stats:Qdisc の統計
357 TCA_XSTATS:qdisc specific:モジュール特有の統計
358 TCA_RATE:struct tc_estimator:レート制限
359 .TE
360
361 さらに、 qdisc モジュール特有の様々な属性を指定できる。 詳細な情報は適切なインクルードファイルを見よ。
362 .TP 
363 \fBRTM_NEWTCLASS\fP, \fBRTM_DELTCLASS\fP, \fBRTM_GETTCLASS\fP
364 トラフィッククラスを追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
365 .TP 
366 \fBRTM_NEWTFILTER\fP, \fBRTM_DELTFILTER\fP, \fBRTM_GETTFILTER\fP
367 トラフィックフィルターの情報を追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
368 .SH バージョン
369 \fBrtnetlink\fP は Linux 2.2 の新機能である。
370 .SH バグ
371 このマニュアルは完全ではない。
372 .SH 関連項目
373 \fBcmsg\fP(3), \fBrtnetlink\fP(3), \fBip\fP(7), \fBnetlink\fP(7)
374 .SH この文書について
375 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
376 である。プロジェクトの説明とバグ報告に関する情報は
377 http://www.kernel.org/doc/man\-pages/ に書かれている。