OSDN Git Service

(split) LDP: Restore and add Copyrights for draft pages
[linuxjm/LDP_man-pages.git] / draft / 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 2012\-04\-26 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
65 struct ifconf {
66     int                 ifc_len; /* size of buffer */
67     union {
68         char           *ifc_buf; /* buffer address */
69         struct ifreq   *ifc_req; /* array of structures */
70     };
71 };
72 .fi
73 .in
74
75 通常、ユーザーによる設定対象デバイスの指定は、 \fIifr_name\fP にインターフェースの名前をセットすることによって行う。
76 他の構造体の全てのメンバは、メモリを共有する。
77 .SS ioctl
78 「特権が必要」と記述されている ioctl を実行するには、 実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP
79 権限が必要である。これが満たされていない場合は \fBEPERM\fP が返される。
80 .TP 
81 \fBSIOCGIFNAME\fP
82 \fIifr_ifindex\fP を受け取り、インターフェースの名前を \fIifr_name\fP に入れて返す。これは結果を \fIifr_name\fP
83 として返す唯一の ioctl である。
84 .TP 
85 \fBSIOCGIFINDEX\fP
86 インターフェースの interface index を取得し、 \fIifr_ifindex\fP に入れて返す。
87 .TP 
88 \fBSIOCGIFFLAGS\fP, \fBSIOCSIFFLAGS\fP
89 .\" Do not right adjust text blocks in tables
90 デバイスの active フラグワードを取得または設定する。 \fIifr_flags\fP には以下の値のビットマスクが入る。
91 .na
92 .TS
93 tab(:);
94 c s
95 l l.
96 デバイスフラグ
97 IFF_UP:インターフェースは動作中。
98 IFF_BROADCAST:有効なブロードキャストアドレスがセットされている。
99 IFF_DEBUG:内部のデバッグフラグ。
100 IFF_LOOPBACK:インターフェースはループバックである。
101 IFF_POINTOPOINT:インターフェースは point\-to\-point リンクである。
102 IFF_RUNNING:リソースが割り当て済み。
103 IFF_NOARP:T{
104 arp プロトコルがない。 L2 宛先アドレスが設定されていない。
105 T}
106 IFF_PROMISC:インターフェースは promiscuous モードである。
107 IFF_NOTRAILERS:trailer の利用を避ける。
108 IFF_ALLMULTI:全てのマルチキャストパケットを受信する。
109 IFF_MASTER:負荷分散グループのマスターである。
110 IFF_SLAVE:負荷分散グループのスレーブである。
111 IFF_MULTICAST:マルチキャストをサポートしている。
112 IFF_PORTSEL:ifmap によってメディアタイプを選択できる。
113 IFF_AUTOMEDIA:自動メディア選択が有効になっている。
114 IFF_DYNAMIC:T{
115 このインターフェースが閉じると、アドレスは失われる。
116 T}
117 IFF_LOWER_UP:ドライバからの L1 アップの通知 (Linux 2.6.17 以降)
118 IFF_DORMANT:ドライバからの休止状態の通知 (Linux 2.6.17 以降)
119 IFF_ECHO:送られたパケットをエコーする (Linux 2.6.25 以降)
120
121 .TE
122 .ad
123 active フラグワードの設定は特権が必要な操作である。
124 読み出しはどんなプロセスからも可能である。
125 .TP 
126 \fBSIOCGIFPFLAGS\fP, \fBSIOCSIFPFLAGS\fP
127 デバイスの拡張 (プライベート) フラグを取得または設定する。
128 \fIifr_flags\fP には以下の値のビットマスクが入る。
129 .TS
130 tab(:);
131 c s
132 l l.
133 プライベートフラグ
134 IFF_802_1Q_VLAN:インターフェースは 802.1Q VLAN デバイスである。
135 IFF_EBRIDGE:インターフェースは Ethernet ブリッジデバイスである。
136 IFF_SLAVE_INACTIVE:インターフェースは非アクティブな bonding のスレーブである。
137 IFF_MASTER_8023AD:インターフェースは 802.3ad bonding のマスターである。
138 IFF_MASTER_ALB:インターフェースは balanced\-alb bonding のマスターである。
139 IFF_BONDING:インターフェースは bonding のマスターかスレーブである。
140 IFF_SLAVE_NEEDARP:インターフェースは検証に APR が必要である。
141 IFF_ISATAP:インターフェースは RFC4214 ISATAP インターフェースである。
142 .TE
143 .sp
144 拡張 (プライベート) インターフェースフラグの設定には特権が必要である。
145 .TP 
146 \fBSIOCGIFADDR\fP, \fBSIOCSIFADDR\fP
147 \fIifr_addr\fP を用いてデバイスのアドレスの設定/取得を行う。
148 インターフェースのアドレスの設定は特権が必要な操作である。
149 互換性確保のため、設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
150 .TP 
151 \fBSIOCGIFDSTADDR\fP, \fBSIOCSIFDSTADDR\fP
152 point\-to\-point デバイスの宛先アドレスを \fIifr_dstaddr\fP を用いて
153 設定/取得する。互換性確保のため、
154 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
155 宛先アドレスの設定は特権が必要な操作である。
156 .TP 
157 \fBSIOCGIFBRDADDR\fP, \fBSIOCSIFBRDADDR\fP
158 デバイスのブロードキャストアドレスを \fIifr_brdaddr\fP を用いて
159 設定/取得する。互換性確保のため、
160 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
161 ブロードキャストアドレスの設定は特権が必要な操作である。
162 .TP 
163 \fBSIOCGIFNETMASK\fP, \fBSIOCSIFNETMASK\fP
164 デバイスのネットワークマスクを \fIifr_netmask\fP を用いて
165 設定/取得する。互換性確保のため、
166 設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
167 ネットワークマスクの設定は特権が必要な操作である。
168 .TP 
169 \fBSIOCGIFMETRIC\fP, \fBSIOCSIFMETRIC\fP
170 デバイスのメトリックを \fIifr_metric\fP を用いて取得・設定する。 これはまだ実装されていない。読み出そうとすると \fIifr_metric\fP
171 に 0 をセットして返り、設定しようとすると \fBEOPNOTSUPP\fP が返る。
172 .TP 
173 \fBSIOCGIFMTU\fP, \fBSIOCSIFMTU\fP
174 デバイスの MTU (Maximum Transfer Unit) を \fIifr_mtu\fP を用いて取得・設定する。 MTU
175 の設定は特権が必要な操作である。 MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。
176 .TP 
177 \fBSIOCGIFHWADDR\fP, \fBSIOCSIFHWADDR\fP
178 デバイスのハードウェアアドレスを \fIifr_hwaddr\fP を用いて取得・設定する。 ハードウェアアドレスは \fIsockaddr\fP
179 構造体に設定される。 \fIsa_family\fP には ARPHRD_* デバイスタイプが入り、 \fIsa_data\fP にはバイト 0 から始まる L2
180 ハードウェアアドレスが入る。 ハードウェアアドレスの設定は特権が必要な操作である。
181 .TP 
182 \fBSIOCSIFHWBROADCAST\fP
183 デバイスのハードウェアブロードキャストアドレスを \fIifr_hwaddr\fP の値に設定する。この操作には特権が必要である。
184 .TP 
185 \fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP
186 インターフェースのハードウェアのパラメータを \fIifr_map\fP を用いて取得・設定する。 パラメータの設定は特権が必要な操作である。
187
188 .in +4n
189 .nf
190 struct ifmap {
191     unsigned long   mem_start;
192     unsigned long   mem_end;
193     unsigned short  base_addr;
194     unsigned char   irq;
195     unsigned char   dma;
196     unsigned char   port;
197 };
198 .fi
199 .in
200
201 ifmap 構造体の解釈はデバイスドライバとアーキテクチャに依存する。
202 .TP 
203 \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
204 デバイスのリンク層のマルチキャストフィルターから、 \fIifr_hwaddr\fP のアドレスを追加・削除する。これらの操作には特権が必要である。
205 別の方法が \fBpacket\fP(7)  で解説されている。
206 .TP 
207 \fBSIOCGIFTXQLEN\fP, \fBSIOCSIFTXQLEN\fP
208 デバイスの送信キューの長さを \fIifr_qlen\fP に取得・設定する。送信キューの長さの設定には特権が必要である。
209 .TP 
210 \fBSIOCSIFNAME\fP
211 \fIifr_name\fP で指定したインターフェースの名前を \fIifr_newname\fP に変更する。この操作には特権が必要である。インターフェースが
212 up していない 時にのみ使用できる。
213 .TP 
214 \fBSIOCGIFCONF\fP
215 .\" Slaving isn't supported in 2.2
216 .\" .
217 .\" .TP
218 .\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
219 .\" Get or set the slave device using
220 .\" .IR ifr_slave .
221 .\" Setting the slave device is a privileged operation.
222 .\" .PP
223 .\" FIXME add amateur radio stuff.
224 インターフェース(トランスポート層)アドレスのリストを返す。 現在のところ、互換性のために \fBAF_INET\fP (IPv4)
225 ファミリーのアドレスのみである。 ユーザーは \fIifconf\fP 構造体を ioctl の引数として渡す。 \fIifconf\fP 構造体には、
226 \fIifreq\fP 構造体の配列へのポインタである \fIifc_req\fP と、バイト単位の配列の長さを指定する \fIifc_len\fP が含まれる。
227 カーネルは ifreqs を現在動作している全ての L3 インターフェースアドレスで埋める。 \fIifr_name\fP にはインターフェース名
228 (eth0:1 など) が入り、 \fIifr_addr\fP にはアドレスが入る。 カーネルは実際の長さを \fIifc_len\fP に返す。
229 \fIifc_len\fP が元のバッファの長さと同じだった場合、 オーバーフローを起こしている可能性があるので、
230 全てのアドレスを取得するためにより大きなバッファで再試行するべきである。 エラーがなかった場合は ioctl は 0 を返す。 エラーがあった場合は
231 \-1 を返す。 オーバーフローはエラーとは見なされない。
232 .PP
233 ほとんどのプロトコルには、専用のインターフェースオプションを 設定するための独自の ioctl が存在する。 説明は各プロトコルの man
234 ページを見よ。
235 .PP
236 さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。
237 .SH 注意
238 厳密にいうと、 \fBSIOCGIFCONF\fP や、 \fBAF_INET\fP ソケットアドレスだけを
239 引き数に取ったり返したりする他の ioctl は IP 固有であり、 \fBip\fP(7)
240 に属する。
241 .LP
242 アドレスがなかったり、 \fBIFF_RUNNING\fP フラグがセットされていないインターフェースの名前は \fI/proc/net/dev\fP
243 で知ることができる。
244 .LP
245 ローカル IPV6 IP アドレスは \fI/proc/net\fP か \fBrtnetlink\fP(7)  で知ることができる。
246 .SH バグ
247 glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
248 とりあえずの対応策として、以下のコードを追加しておくこと。
249 .sp
250 .in +4n
251 .nf
252 #ifndef ifr_newname
253 #define ifr_newname     ifr_ifru.ifru_slave
254 #endif
255 .fi
256 .in
257 .SH 関連項目
258 \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
259 .SH この文書について
260 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
261 である。プロジェクトの説明とバグ報告に関する情報は
262 http://www.kernel.org/doc/man\-pages/ に書かれている。