OSDN Git Service

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