OSDN Git Service

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