OSDN Git Service

Update README
[linuxjm/LDP_man-pages.git] / release / man7 / netdevice.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 .\" $Id: netdevice.7,v 1.10 2000/08/17 10:09:54 ak Exp $
12 .\"
13 .\" Modified, 2004-11-25, mtk, formatting and a few wording fixes
14 .\"
15 .\" Modified, 2011-11-02, <bidulock@openss7.org>, added many basic
16 .\"  but missing ioctls, such as SIOCGIFADDR.
17 .\"
18 .\"*******************************************************************
19 .\"
20 .\" This file was generated with po4a. Translate the source file.
21 .\"
22 .\"*******************************************************************
23 .\"
24 .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
25 .\" Translated Mon 6 Dec 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
26 .\" Updated Wed 14 Feb 2001 by Kentaro Shirakata <argrath@ub32.org>
27 .\" Updated 2009-02-12 by Kentaro Shirakata <argrath@ub32.org>
28 .\" Updated 2012-05-06, Akihiro MOTOKI <amotoki@gmail.com>
29 .\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
30 .\"
31 .TH NETDEVICE 7 2014\-01\-24 Linux "Linux Programmer's Manual"
32 .SH 名前
33 netdevice \- Linux ネットワークデバイスへの低レベルアクセス
34 .SH 書式
35 \fB#include <sys/ioctl.h>\fP
36 .br
37 \fB#include <net/if.h>\fP
38 .SH 説明
39 この man ページでは、ネットワークデバイスを設定するために 用いるソケットインターフェースについて解説する。
40
41 Linux はネットワークデバイスを設定するための標準的な ioctl を いくつか備えている。これらはどんなソケットのファイルディスクリプターにも
42 用いることができる。ファミリーやタイプは何でもよい。 これらの ioctl のほとんどは \fIifreq\fP 構造体を渡す。
43
44 .in +4n
45 .nf
46 struct ifreq {
47     char ifr_name[IFNAMSIZ]; /* Interface name */
48     union {
49         struct sockaddr ifr_addr;
50         struct sockaddr ifr_dstaddr;
51         struct sockaddr ifr_broadaddr;
52         struct sockaddr ifr_netmask;
53         struct sockaddr ifr_hwaddr;
54         short           ifr_flags;
55         int             ifr_ifindex;
56         int             ifr_metric;
57         int             ifr_mtu;
58         struct ifmap    ifr_map;
59         char            ifr_slave[IFNAMSIZ];
60         char            ifr_newname[IFNAMSIZ];
61         char           *ifr_data;
62     };
63 };
64 .fi
65 .in
66
67 通常、ユーザーによる設定対象デバイスの指定は、 \fIifr_name\fP にインターフェースの名前をセットすることによって行う。
68 他の構造体の全てのメンバは、メモリーを共有する。
69 .SS ioctl
70 「特権が必要」と記述されている ioctl を実行するには、 実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP
71 権限が必要である。これが満たされていない場合は \fBEPERM\fP が返される。
72 .TP 
73 \fBSIOCGIFNAME\fP
74 \fIifr_ifindex\fP を受け取り、インターフェースの名前を \fIifr_name\fP に入れて返す。これは結果を \fIifr_name\fP
75 として返す唯一の ioctl である。
76 .TP 
77 \fBSIOCGIFINDEX\fP
78 インターフェースの interface index を取得し、 \fIifr_ifindex\fP に入れて返す。
79 .TP 
80 \fBSIOCGIFFLAGS\fP, \fBSIOCSIFFLAGS\fP
81 .\" Do not right adjust text blocks in tables
82 デバイスの active フラグワードを取得または設定する。 \fIifr_flags\fP には以下の値のビットマスクが入る。
83 .na
84 .TS
85 tab(:);
86 c s
87 l l.
88 デバイスフラグ
89 IFF_UP:インターフェースは動作中。
90 IFF_BROADCAST:有効なブロードキャストアドレスがセットされている。
91 IFF_DEBUG:内部のデバッグフラグ。
92 IFF_LOOPBACK:インターフェースはループバックである。
93 IFF_POINTOPOINT:インターフェースは point\-to\-point リンクである。
94 IFF_RUNNING:リソースが割り当て済み。
95 IFF_NOARP:T{
96 arp プロトコルがない。 L2 宛先アドレスが設定されていない。
97 T}
98 IFF_PROMISC:インターフェースは promiscuous モードである。
99 IFF_NOTRAILERS:trailer の利用を避ける。
100 IFF_ALLMULTI:全てのマルチキャストパケットを受信する。
101 IFF_MASTER:負荷分散グループのマスターである。
102 IFF_SLAVE:負荷分散グループのスレーブである。
103 IFF_MULTICAST:マルチキャストをサポートしている。
104 IFF_PORTSEL:ifmap によってメディアタイプを選択できる。
105 IFF_AUTOMEDIA:自動メディア選択が有効になっている。
106 IFF_DYNAMIC:T{
107 このインターフェースが閉じると、アドレスは失われる。
108 T}
109 IFF_LOWER_UP:ドライバからの L1 アップの通知 (Linux 2.6.17 以降)
110 IFF_DORMANT:ドライバからの休止状態の通知 (Linux 2.6.17 以降)
111 IFF_ECHO:送られたパケットをエコーする (Linux 2.6.25 以降)
112
113 .TE
114 .ad
115 active フラグワードの設定は特権が必要な操作である。
116 読み出しはどんなプロセスからも可能である。
117 .TP 
118 \fBSIOCGIFPFLAGS\fP, \fBSIOCSIFPFLAGS\fP
119 デバイスの拡張 (プライベート) フラグを取得または設定する。
120 \fIifr_flags\fP には以下の値のビットマスクが入る。
121 .TS
122 tab(:);
123 c s
124 l l.
125 プライベートフラグ
126 IFF_802_1Q_VLAN:インターフェースは 802.1Q VLAN デバイスである。
127 IFF_EBRIDGE:インターフェースは Ethernet ブリッジデバイスである。
128 IFF_SLAVE_INACTIVE:インターフェースは非アクティブな bonding のスレーブである。
129 IFF_MASTER_8023AD:インターフェースは 802.3ad bonding のマスターである。
130 IFF_MASTER_ALB:インターフェースは balanced\-alb bonding のマスターである。
131 IFF_BONDING:インターフェースは bonding のマスターかスレーブである。
132 IFF_SLAVE_NEEDARP:インターフェースは検証に APR が必要である。
133 IFF_ISATAP:インターフェースは RFC4214 ISATAP インターフェースである。
134 .TE
135 .sp
136 拡張 (プライベート) インターフェースフラグの設定には特権が必要である。
137 .TP 
138 \fBSIOCGIFADDR\fP, \fBSIOCSIFADDR\fP
139 \fIifr_addr\fP を用いてデバイスのアドレスの設定/取得を行う。
140 インターフェースのアドレスの設定は特権が必要な操作である。
141 互換性確保のため、設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
142 .TP 
143 \fBSIOCGIFDSTADDR\fP, \fBSIOCSIFDSTADDR\fP
144 point\-to\-point デバイスの宛先アドレスを \fIifr_dstaddr\fP を用いて
145 設定/取得する。互換性確保のため、
146 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
147 宛先アドレスの設定は特権が必要な操作である。
148 .TP 
149 \fBSIOCGIFBRDADDR\fP, \fBSIOCSIFBRDADDR\fP
150 デバイスのブロードキャストアドレスを \fIifr_brdaddr\fP を用いて
151 設定/取得する。互換性確保のため、
152 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
153 ブロードキャストアドレスの設定は特権が必要な操作である。
154 .TP 
155 \fBSIOCGIFNETMASK\fP, \fBSIOCSIFNETMASK\fP
156 デバイスのネットワークマスクを \fIifr_netmask\fP を用いて
157 設定/取得する。互換性確保のため、
158 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
159 ネットワークマスクの設定は特権が必要な操作である。
160 .TP 
161 \fBSIOCGIFMETRIC\fP, \fBSIOCSIFMETRIC\fP
162 デバイスのメトリックを \fIifr_metric\fP を用いて取得・設定する。 これはまだ実装されていない。読み出そうとすると \fIifr_metric\fP
163 に 0 をセットして返り、設定しようとすると \fBEOPNOTSUPP\fP が返る。
164 .TP 
165 \fBSIOCGIFMTU\fP, \fBSIOCSIFMTU\fP
166 デバイスの MTU (Maximum Transfer Unit) を \fIifr_mtu\fP を用いて取得・設定する。 MTU
167 の設定は特権が必要な操作である。 MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。
168 .TP 
169 \fBSIOCGIFHWADDR\fP, \fBSIOCSIFHWADDR\fP
170 デバイスのハードウェアアドレスを \fIifr_hwaddr\fP を用いて取得・設定する。 ハードウェアアドレスは \fIsockaddr\fP
171 構造体に設定される。 \fIsa_family\fP には ARPHRD_* デバイスタイプが入り、 \fIsa_data\fP にはバイト 0 から始まる L2
172 ハードウェアアドレスが入る。 ハードウェアアドレスの設定は特権が必要な操作である。
173 .TP 
174 \fBSIOCSIFHWBROADCAST\fP
175 デバイスのハードウェアブロードキャストアドレスを \fIifr_hwaddr\fP の値に設定する。この操作には特権が必要である。
176 .TP 
177 \fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP
178 インターフェースのハードウェアのパラメーターを \fIifr_map\fP を用いて取得・設定する。 パラメーターの設定は特権が必要な操作である。
179
180 .in +4n
181 .nf
182 struct ifmap {
183     unsigned long   mem_start;
184     unsigned long   mem_end;
185     unsigned short  base_addr;
186     unsigned char   irq;
187     unsigned char   dma;
188     unsigned char   port;
189 };
190 .fi
191 .in
192
193 ifmap 構造体の解釈はデバイスドライバとアーキテクチャーに依存する。
194 .TP 
195 \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
196 デバイスのリンク層のマルチキャストフィルターから、 \fIifr_hwaddr\fP のアドレスを追加・削除する。これらの操作には特権が必要である。
197 別の方法が \fBpacket\fP(7)  で解説されている。
198 .TP 
199 \fBSIOCGIFTXQLEN\fP, \fBSIOCSIFTXQLEN\fP
200 デバイスの送信キューの長さを \fIifr_qlen\fP に取得・設定する。送信キューの長さの設定には特権が必要である。
201 .TP 
202 \fBSIOCSIFNAME\fP
203 \fIifr_name\fP で指定したインターフェースの名前を \fIifr_newname\fP に変更する。この操作には特権が必要である。インターフェースが
204 up していない 時にのみ使用できる。
205 .TP 
206 \fBSIOCGIFCONF\fP
207 インターフェースの (トランスポート層の) アドレスのリストを返す。 現在のところ、互換性のため返されるのは \fBAF_INET\fP (IPv4)
208 系のアドレスだけである。 他の操作と違い、この ioctl では \fIifconf\fP 構造体を渡す。
209
210 .in +4n
211 .nf
212 struct ifconf {
213     int                 ifc_len; /* バッファーサイズ */
214     union {
215         char           *ifc_buf; /* バッファーアドレス */
216         struct ifreq   *ifc_req; /* 構造体の配列 */
217     };
218 };
219 .fi
220 .in
221
222 \fIifc_req\fP が NULL の場合、 \fBSIOCGIFCONF\fP はすべての取得できるアドレスを受け取るのに必要なバッファーサイズ
223 (バイト数) を \fIifc_len\fP に格納して返す。 それ以外の場合は、\fIifc_req\fP には \fIifreq\fP
224 構造体の配列へのポインターを渡す。 この構造体の配列には現在アクティブな L3 インターフェースアドレスがすべて格納される。 \fIifc_len\fP
225 はバイト単位の配列のサイズを渡す。 \fIifreq\fP 構造体内では、 \fIifr_name\fP にインターフェース名が、 \fIifr_addr\fP
226 にそのアドレスが入る。 実際に格納されたバイト数は \fIifc_len\fP で返される。
227
228 \fIifc_len\fP で指定されたサイズがすべてのアドレスを格納するのに不十分な場合、 カーネルは超過分をスキップし、成功を返す。
229 この状況になった場合、それを検出する信頼できる方法はない。 したがって、 前もって \fIifc_req\fP を NULL に設定して
230 \fBSIOCGIFCONF\fP を呼び出して必要なバッファーサイズを決定するか、 返された \fIifc_len\fP と元の値の差分が
231 \fIsizeof(struct ifreq)\fP よりも小さい場合は必ずバッファーを大きくして再度呼び出すか、 のいずれかを行うことが推奨される。
232
233 .\" Slaving isn't supported in 2.2
234 .\" .
235 .\" .TP
236 .\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
237 .\" Get or set the slave device using
238 .\" .IR ifr_slave .
239 .\" Setting the slave device is a privileged operation.
240 .\" .PP
241 .\" FIXME . add amateur radio stuff.
242 \fIifconf\fP か \fIifreq\fP 構造体へのアクセスでエラーが置こった場合には \fBEFAULT\fP が返される。
243 .PP
244 ほとんどのプロトコルには、専用のインターフェースオプションを 設定するための独自の ioctl が存在する。 説明は各プロトコルの man
245 ページを見よ。 IP アドレスの設定に関しては \fBip\fP(7) を参照。
246 .PP
247 さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。
248 .SH 注意
249 厳密にいうと、 \fBSIOCGIFCONF\fP や、 \fBAF_INET\fP ソケットアドレスだけを
250 引き数に取ったり返したりする他の ioctl は IP 固有であり、 \fBip\fP(7)
251 に属する。
252 .LP
253 アドレスがなかったり、 \fBIFF_RUNNING\fP フラグがセットされていないインターフェースの名前は \fI/proc/net/dev\fP
254 で知ることができる。
255 .LP
256 ローカル IPV6 IP アドレスは \fI/proc/net\fP か \fBrtnetlink\fP(7)  で知ることができる。
257 .SH バグ
258 glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
259 とりあえずの対応策として、以下のコードを追加しておくこと。
260 .sp
261 .in +4n
262 .nf
263 #ifndef ifr_newname
264 #define ifr_newname     ifr_ifru.ifru_slave
265 #endif
266 .fi
267 .in
268 .SH 関連項目
269 \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
270 .SH この文書について
271 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
272 である。プロジェクトの説明とバグ報告に関する情報は
273 http://www.kernel.org/doc/man\-pages/ に書かれている。