2 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
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.
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 $
15 .\"*******************************************************************
17 .\" This file was generated with po4a. Translate the source file.
19 .\"*******************************************************************
20 .TH RTNETLINK 7 2013\-03\-05 Linux "Linux Programmer's Manual"
22 rtnetlink \- Linux IPv4 ルーティングソケット
24 \fB#include <asm/types.h>\fP
26 \fB#include <linux/netlink.h>\fP
28 \fB#include <linux/rtnetlink.h>\fP
30 \fB#include <sys/socket.h>\fP
32 \fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB,
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) を見ること。
42 rtnetlink メッセージには、初期ヘッダの後に付加的な属性を 持つものがある。
47 unsigned short rta_len; /* Length of option */
48 unsigned short rta_type; /* Type of option */
54 これらの属性の操作は、 RTA_* マクロか libnetlink のみを使って行うべきである。 \fBrtnetlink\fP(3) を見よ。
56 rtnetlink は (標準的な netlink メッセージに加えて) 以下のメッセージタイプから構成される。
58 \fBRTM_NEWLINK\fP, \fBRTM_DELLINK\fP, \fBRTM_GETLINK\fP
59 指定したネットワークインターフェースの情報を、生成・削除・取得する。 これらのメッセージは \fIifinfomsg\fP 構造体と、それに続いていくつかの
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 */
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 にセットすべきである。
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
91 IFLA_QDISC:asciiz string:キューイングのルール
98 \fBIFLA_STATS\fP の値の型は \fIstruct rtnl_link_stats\fP (Linux 2.4 以前では \fIstruct
99 net_device_stats\fP) である。
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
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 */
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
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:アドレス情報
138 .\" FIXME struct ifa_cacheinfo
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 を入れると、ワイルドカードを意味する。
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 */
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 */
158 unsigned int rtm_flags;
168 RTN_UNICAST:ゲートウェイまたはダイレクトな経路
169 RTN_LOCAL:ローカルインターフェースの経路
171 ローカルなブロードキャスト経路 (ブロードキャストとして送信される)
174 ローカルなブロードキャスト経路 (ユニキャストとして送信される)
176 RTN_MULTICAST:マルチキャスト経路
177 RTN_BLACKHOLE:パケットを捨てる経路
178 RTN_UNREACHABLE:到達できない行き先
179 RTN_PROHIBIT:パケットを拒否する経路
180 RTN_THROW:経路探索を別のテーブルで継続
181 RTN_NAT:ネットワークアドレスの変換ルール
195 ICMP リダイレクトによる (現在は用いられない)
197 RTPROT_KERNEL:カーネルによる
203 \fBRTPROT_STATIC\fP よりも大きな値はカーネルによって解釈されない。これは 単なるユーザーへの情報である。これらは経路情報の情報源を
204 タグ付けしたり、複数のルーティングデーモンからの情報を 区別するために用いることができる。 既に割り当てられているルーティングデーモンの識別子については
205 \fI<linux/rtnetlink.h>\fP を見よ。
207 \fIrtm_scope\fP は行き先への距離である。
212 RT_SCOPE_UNIVERSE:グローバルな経路
216 RT_SCOPE_LINK:このリンク上の経路
217 RT_SCOPE_HOST:ローカルホスト上の経路
218 RT_SCOPE_NOWHERE:行き先が存在しない
222 ユーザーは \fBRT_SCOPE_UNIVERSE\fP と \fBRT_SCOPE_SITE\fP の間の値を用いることができる。
224 \fIrtm_flags\fP は以下の意味を持つ:
230 経路が変更されると、 rtnetlink を通してユーザーに通知が行く。
232 RTM_F_CLONED:経路は他の経路によって複製された。
233 RTM_F_EQUALIZE:マルチパスイコライザ (まだ実装されていない)
237 \fIrtm_table\fP ではルーティングテーブルを指定する。
241 RT_TABLE_UNSPEC:指定されていないルーティングテーブル
242 RT_TABLE_DEFAULT:デフォルトのテーブル
243 RT_TABLE_MAIN:メインのテーブル
244 RT_TABLE_LOCAL:ローカルテーブル
247 .\" Keep table on same page
248 ユーザーは \fBRT_TABLE_UNSPEC\fP と \fBRT_TABLE_DEFAULT\fP. の間の任意の値を用いることができる。
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:経路の優先度
265 RTA_METRICS:int:経路のメトリック
274 \fBRTM_NEWNEIGH\fP, \fBRTM_DELNEIGH\fP, \fBRTM_GETNEIGH\fP
275 近傍テーブル (neighbor table) のエントリ (例えば ARP エントリ) の情報を追加・削除・取得する。 このメッセージは
280 unsigned char ndm_family;
281 int ndm_ifindex; /* Interface index */
282 __u16 ndm_state; /* State */
283 __u8 ndm_flags; /* Flags */
287 struct nda_cacheinfo {
295 \fIndm_state\fP は以下の状態のビットマスクである:
299 NUD_INCOMPLETE:現在レゾルブ中のキャッシュエントリ
300 NUD_REACHABLE:動作確認済みのキャッシュエントリ
301 NUD_STALE:期限切れのキャッシュエントリ
302 NUD_DELAY:タイマ待ちのキャッシュエントリ
303 NUD_PROBE:再確認中のキャッシュエントリ
304 NUD_FAILED:不正なキャッシュエントリ
305 NUD_NOARP:行き先キャッシュのないデバイス
306 NUD_PERMANENT:静的なエントリ
309 有効な \fIndm_flags\fP は以下の通り:
313 NTF_PROXY:プロクシ arp エントリ
318 .\" document the members of the struct better
319 \fIrtattr\fP 構造体は、 \fIrta_type\fP フィールドに応じてそれぞれ以下の意味を持つ:
324 NDA_DST:近傍キャッシュネットワーク層の行き先アドレス
325 NDA_LLADDR:近傍キャッシュリンク層のアドレス
326 NDA_CACHEINFO:キャッシュの統計
329 \fIrta_type\fP フィールドが \fBNDA_CACHEINFO\fP の場合には、 \fIstruct nda_cacheinfo\fP ヘッダが続く。
331 \fBRTM_NEWRULE\fP, \fBRTM_DELRULE\fP, \fBRTM_GETRULE\fP
332 ルーティングルールを追加・削除・取得する。 \fIstruct rtmsg\fP を伴う。
334 \fBRTM_NEWQDISC\fP, \fBRTM_DELQDISC\fP, \fBRTM_GETQDISC\fP
335 キューイングルールを追加・削除・取得する。 このメッセージは \fIstruct tcmsg\fP を伴い、またそのあとに属性がいくつか続くこともある。
339 unsigned char tcm_family;
340 int tcm_ifindex; /* interface index */
341 __u32 tcm_handle; /* Qdisc handle */
342 __u32 tcm_parent; /* Parent qdisc */
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:レート制限
361 さらに、 qdisc モジュール特有の様々な属性を指定できる。 詳細な情報は適切なインクルードファイルを見よ。
363 \fBRTM_NEWTCLASS\fP, \fBRTM_DELTCLASS\fP, \fBRTM_GETTCLASS\fP
364 トラフィッククラスを追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
366 \fBRTM_NEWTFILTER\fP, \fBRTM_DELTFILTER\fP, \fBRTM_GETTFILTER\fP
367 トラフィックフィルターの情報を追加・削除・取得する。 これらのメッセージは、上述の \fIstruct tcmsg\fP を伴う。
369 \fBrtnetlink\fP は Linux 2.2 の新機能である。
373 \fBcmsg\fP(3), \fBrtnetlink\fP(3), \fBip\fP(7), \fBnetlink\fP(7)
375 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
376 である。プロジェクトの説明とバグ報告に関する情報は
377 http://www.kernel.org/doc/man\-pages/ に書かれている。