OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man7 / netdevice.7
index 47dee27..2c5b179 100644 (file)
@@ -28,7 +28,7 @@
 .\" Updated 2012-05-06, Akihiro MOTOKI <amotoki@gmail.com>
 .\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH NETDEVICE 7 2012\-04\-26 Linux "Linux Programmer's Manual"
+.TH NETDEVICE 7 2014\-01\-24 Linux "Linux Programmer's Manual"
 .SH 名前
 netdevice \- Linux ネットワークデバイスへの低レベルアクセス
 .SH 書式
@@ -38,8 +38,8 @@ netdevice \- Linux ネットワークデバイスへの低レベルアクセス
 .SH 説明
 この man ページでは、ネットワークデバイスを設定するために 用いるソケットインターフェースについて解説する。
 
-Linux はネットワークデバイスを設定するための標準的な ioctl を いくつか備えている。これらはどんなソケットのファイルディスクリプタにも
-用いることができる。ファミリーやタイプは何でもよい。 これらの ioctl は \fIifreq\fP 構造体を渡す。
+Linux ã\81¯ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ã\83\87ã\83\90ã\82¤ã\82¹ã\82\92設å®\9aã\81\99ã\82\8bã\81\9fã\82\81ã\81®æ¨\99æº\96ç\9a\84ã\81ª ioctl ã\82\92 ã\81\84ã\81\8fã\81¤ã\81\8bå\82\99ã\81\88ã\81¦ã\81\84ã\82\8bã\80\82ã\81\93ã\82\8cã\82\89ã\81¯ã\81©ã\82\93ã\81ªã\82½ã\82±ã\83\83ã\83\88ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81«ã\82\82
\94¨ã\81\84ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\82\8bã\80\82ã\83\95ã\82¡ã\83\9fã\83ªã\83¼ã\82\84ã\82¿ã\82¤ã\83\97ã\81¯ä½\95ã\81§ã\82\82ã\82\88ã\81\84ã\80\82 ã\81\93ã\82\8cã\82\89ã\81® ioctl ã\81®ã\81»ã\81¨ã\82\93ã\81©ã\81¯ \fIifreq\fP æ§\8bé\80 ä½\93ã\82\92渡ã\81\99ã\80\82
 
 .in +4n
 .nf
@@ -61,19 +61,11 @@ struct ifreq {
         char           *ifr_data;
     };
 };
-
-struct ifconf {
-    int                 ifc_len; /* size of buffer */
-    union {
-        char           *ifc_buf; /* buffer address */
-        struct ifreq   *ifc_req; /* array of structures */
-    };
-};
 .fi
 .in
 
 通常、ユーザーによる設定対象デバイスの指定は、 \fIifr_name\fP にインターフェースの名前をセットすることによって行う。
-他の構造体の全てのメンバは、メモリを共有する。
+ä»\96ã\81®æ§\8bé\80 ä½\93ã\81®å\85¨ã\81¦ã\81®ã\83¡ã\83³ã\83\90ã\81¯ã\80\81ã\83¡ã\83¢ã\83ªã\83¼ã\82\92å\85±æ\9c\89ã\81\99ã\82\8bã\80\82
 .SS ioctl
 「特権が必要」と記述されている ioctl を実行するには、 実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP
 権限が必要である。これが満たされていない場合は \fBEPERM\fP が返される。
@@ -183,7 +175,7 @@ point\-to\-point デバイスの宛先アドレスを \fIifr_dstaddr\fP を用
 デバイスのハードウェアブロードキャストアドレスを \fIifr_hwaddr\fP の値に設定する。この操作には特権が必要である。
 .TP 
 \fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP
\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®ã\83\8fã\83¼ã\83\89ã\82¦ã\82§ã\82¢ã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\82\92 \fIifr_map\fP ã\82\92ç\94¨ã\81\84ã\81¦å\8f\96å¾\97ã\83»è¨­å®\9aã\81\99ã\82\8bã\80\82 ã\83\91ã\83©ã\83¡ã\83¼ã\82¿の設定は特権が必要な操作である。
\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®ã\83\8fã\83¼ã\83\89ã\82¦ã\82§ã\82¢ã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\82\92 \fIifr_map\fP ã\82\92ç\94¨ã\81\84ã\81¦å\8f\96å¾\97ã\83»è¨­å®\9aã\81\99ã\82\8bã\80\82 ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼の設定は特権が必要な操作である。
 
 .in +4n
 .nf
@@ -198,7 +190,7 @@ struct ifmap {
 .fi
 .in
 
-ifmap 構造体の解釈はデバイスドライバとアーキテクチャに依存する。
+ifmap æ§\8bé\80 ä½\93ã\81®è§£é\87\88ã\81¯ã\83\87ã\83\90ã\82¤ã\82¹ã\83\89ã\83©ã\82¤ã\83\90ã\81¨ã\82¢ã\83¼ã\82­ã\83\86ã\82¯ã\83\81ã\83£ã\83¼ã\81«ä¾\9då­\98ã\81\99ã\82\8bã\80\82
 .TP 
 \fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
 デバイスのリンク層のマルチキャストフィルターから、 \fIifr_hwaddr\fP のアドレスを追加・削除する。これらの操作には特権が必要である。
@@ -212,6 +204,32 @@ ifmap 構造体の解釈はデバイスドライバとアーキテクチャに
 up していない 時にのみ使用できる。
 .TP 
 \fBSIOCGIFCONF\fP
+インターフェースの (トランスポート層の) アドレスのリストを返す。 現在のところ、互換性のため返されるのは \fBAF_INET\fP (IPv4)
+系のアドレスだけである。 他の操作と違い、この ioctl では \fIifconf\fP 構造体を渡す。
+
+.in +4n
+.nf
+struct ifconf {
+    int                 ifc_len; /* バッファーサイズ */
+    union {
+        char           *ifc_buf; /* バッファーアドレス */
+        struct ifreq   *ifc_req; /* 構造体の配列 */
+    };
+};
+.fi
+.in
+
+\fIifc_req\fP が NULL の場合、 \fBSIOCGIFCONF\fP はすべての取得できるアドレスを受け取るのに必要なバッファーサイズ
+(バイト数) を \fIifc_len\fP に格納して返す。 それ以外の場合は、\fIifc_req\fP には \fIifreq\fP
+構造体の配列へのポインターを渡す。 この構造体の配列には現在アクティブな L3 インターフェースアドレスがすべて格納される。 \fIifc_len\fP
+はバイト単位の配列のサイズを渡す。 \fIifreq\fP 構造体内では、 \fIifr_name\fP にインターフェース名が、 \fIifr_addr\fP
+にそのアドレスが入る。 実際に格納されたバイト数は \fIifc_len\fP で返される。
+
+\fIifc_len\fP で指定されたサイズがすべてのアドレスを格納するのに不十分な場合、 カーネルは超過分をスキップし、成功を返す。
+この状況になった場合、それを検出する信頼できる方法はない。 したがって、 前もって \fIifc_req\fP を NULL に設定して
+\fBSIOCGIFCONF\fP を呼び出して必要なバッファーサイズを決定するか、 返された \fIifc_len\fP と元の値の差分が
+\fIsizeof(struct ifreq)\fP よりも小さい場合は必ずバッファーを大きくして再度呼び出すか、 のいずれかを行うことが推奨される。
+
 .\" Slaving isn't supported in 2.2
 .\" .
 .\" .TP
@@ -220,18 +238,11 @@ up していない 時にのみ使用できる。
 .\" .IR ifr_slave .
 .\" Setting the slave device is a privileged operation.
 .\" .PP
-.\" FIXME add amateur radio stuff.
-インターフェース(トランスポート層)アドレスのリストを返す。 現在のところ、互換性のために \fBAF_INET\fP (IPv4)
-ファミリーのアドレスのみである。 ユーザーは \fIifconf\fP 構造体を ioctl の引数として渡す。 \fIifconf\fP 構造体には、
-\fIifreq\fP 構造体の配列へのポインタである \fIifc_req\fP と、バイト単位の配列の長さを指定する \fIifc_len\fP が含まれる。
-カーネルは ifreqs を現在動作している全ての L3 インターフェースアドレスで埋める。 \fIifr_name\fP にはインターフェース名
-(eth0:1 など) が入り、 \fIifr_addr\fP にはアドレスが入る。 カーネルは実際の長さを \fIifc_len\fP に返す。
-\fIifc_len\fP が元のバッファの長さと同じだった場合、 オーバーフローを起こしている可能性があるので、
-全てのアドレスを取得するためにより大きなバッファで再試行するべきである。 エラーがなかった場合は ioctl は 0 を返す。 エラーがあった場合は
-\-1 を返す。 オーバーフローはエラーとは見なされない。
+.\" FIXME . add amateur radio stuff.
+\fIifconf\fP か \fIifreq\fP 構造体へのアクセスでエラーが置こった場合には \fBEFAULT\fP が返される。
 .PP
 ほとんどのプロトコルには、専用のインターフェースオプションを 設定するための独自の ioctl が存在する。 説明は各プロトコルの man
-ページを見よ。
+ページを見よ。 IP アドレスの設定に関しては \fBip\fP(7) を参照。
 .PP
 さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。
 .SH 注意
@@ -257,6 +268,6 @@ glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
 .SH 関連項目
 \fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。