OSDN Git Service

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