OSDN Git Service

(split) LDP: draft snapshot from latest ja.po files.
authorAkihiro MOTOKI <amotoki@gmail.com>
Sat, 5 May 2012 20:25:56 +0000 (05:25 +0900)
committerAkihiro MOTOKI <amotoki@gmail.com>
Sat, 5 May 2012 20:25:56 +0000 (05:25 +0900)
draft/man3/getnetent_r.3 [new file with mode: 0644]
draft/man3/getprotoent_r.3 [new file with mode: 0644]
draft/man3/getrpcent_r.3 [new file with mode: 0644]
draft/man3/getservent_r.3 [new file with mode: 0644]
draft/man5/networks.5 [new file with mode: 0644]
draft/man5/nsswitch.conf.5 [new file with mode: 0644]
draft/man5/resolv.conf.5 [new file with mode: 0644]
draft/man7/netdevice.7 [new file with mode: 0644]

diff --git a/draft/man3/getnetent_r.3 b/draft/man3/getnetent_r.3
new file mode 100644 (file)
index 0000000..fa65473
--- /dev/null
@@ -0,0 +1,116 @@
+.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk
+.\"    <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETNETENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+getnetent_r, getnetbyname_r, getnetbyaddr_r \- ネットワークエントリを
+取得する (リエントラント版)
+.SH 書式
+.nf
+\fB#include <netdb.h>\fP
+.sp
+\fBint getnetent_r(struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP
+\fB                int *\fP\fIh_errnop\fP\fB);\fP
+.sp
+\fBint getnetbyname_r(const char *\fP\fIname\fP\fB,\fP
+\fB                struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP
+\fB                int *\fP\fIh_errnop\fP\fB);\fP
+.sp
+\fBint getnetbyaddr_r(uint32_t \fP\fInet\fP\fB, int \fP\fItype\fP\fB,\fP
+\fB                struct netent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct netent **\fP\fIresult\fP\fB,\fP
+\fB                int *\fP\fIh_errnop\fP\fB);\fP
+.sp
+.fi
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.ad l
+.in
+.sp
+\fBgetnetent_r\fP(), \fBgetnetbyname_r\fP(), \fBgetnetbyaddr_r\fP():
+.RS 4
+_BSD_SOURCE || _SVID_SOURCE
+.RE
+.ad b
+.SH 説明
+関数 \fBgetnetent_r\fP(), \fBgetnetbyname_r\fP(), \fBgetnetbyaddr_r\fP() は、
+それぞれ \fBgetnetent\fP(3), \fBgetnetbyname\fP(3), \fBgetnetbynumber\fP(3) の
+リエントラント版である。
+\fInetent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。
+このマニュアルページでは、リエントラントでない関数との違いだけを
+説明する。
+
+これらの関数は、関数の結果として静的に割り当てられた \fInetent\fP 構造体
+へのポインタを返すのではなく、 \fInetent\fP 構造体を \fIresult_buf\fP が
+指す場所にコピーする。
+
+.\" I can find no information on the required/recommended buffer size;
+.\" the nonreentrant functions use a 1024 byte buffer -- mtk.
+配列 \fIbuf\fP は、返される \fInetent\fP 構造体が指す文字列フィールドを格納
+するのに使用される (リエントラントでない関数の場合は、
+これらの文字列は静的な領域に格納される)。
+この配列の大きさは \fIbuflen\fP で指定される。
+\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、
+呼び出し側ではもっと大きなバッファで再度呼び出す必要がある (ほとんどの
+アプリケーションでは、長さ 1024 バイトのバッファで十分なはずである)。
+
+関数呼び出しでネットワークレコードの取得に成功すると、
+\fI*result\fP は \fIresult_buf\fP を指すように設定される。
+それ以外の場合は \fI*result\fP に NULL が設定される。
+
+.\" getnetent.3 doesn't document any use of h_errno, but nevertheless
+.\" the nonreentrant functions no seem to set h_errno.
+\fIh_errnop\fP が指すバッファは、リエントラントでない関数では
+グローバル変数 \fIh_errno\fP に格納されていた値を返すのに使用される。
+.SH 返り値
+成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の
+リストにある正のエラー番号のいずれかを返す。
+
+エラーの場合、レコードが見つからなかった場合 (\fBgetnetbyname_r\fP(),
+\fBgetnetbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetnetent_r\fP())、
+\fIresult\fP には NULL が設定される。
+.SH エラー
+.TP 
+\fBENOENT\fP
+(\fBgetnetent_r\fP())  データベースにこれ以上レコードがない。
+.TP 
+\fBERANGE\fP
+\fIbuf\fP が小さすぎる。もっと大きなバッファにして
+(または \fIbuflen\fP を増やして) 再度呼び出すこと。
+.SH 準拠
+これらの関数は GNU による拡張である。
+他のシステムにも同様の名前の関数が存在する場合があるが、
+通常は関数の引き数が異なる。
+.SH 関連項目
+\fBgetnetent\fP(3), \fBnetworks\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man3/getprotoent_r.3 b/draft/man3/getprotoent_r.3
new file mode 100644 (file)
index 0000000..7ea2dfa
--- /dev/null
@@ -0,0 +1,205 @@
+.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk
+.\"    <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETPROTOENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+getprotoent_r, getprotobyname_r, getprotobynumber_r \- プロトコル
+エントリを取得する (リエントラント版)
+.SH 書式
+.nf
+\fB#include <netdb.h>\fP
+.sp
+\fBint getprotoent_r(struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getprotobyname_r(const char *\fP\fIname\fP\fB,\fP
+\fB                struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getprotobynumber_r(int \fP\fIproto\fP\fB,\fP
+\fB                struct protoent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct protoent **\fP\fIresult\fP\fB);\fP
+.sp
+.fi
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.ad l
+.in
+.sp
+\fBgetprotoent_r\fP(), \fBgetprotobyname_r\fP(), \fBgetprotobynumber_r\fP():
+.RS 4
+_BSD_SOURCE || _SVID_SOURCE
+.RE
+.ad b
+.SH 説明
+関数 \fBgetprotoent_r\fP(), \fBgetprotobyname_r\fP(),
+\fBgetprotobynumber_r\fP() は、それぞれ \fBgetprotoent\fP(3),
+\fBgetprotobyname\fP(3), \fBgetprotobynumber\fP(3) のリエントラント版である。
+\fIprotoent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。
+このマニュアルページでは、リエントラントでない関数との違いだけを
+説明する。
+
+これらの関数は、関数の結果として静的に割り当てられた \fIprotoent\fP 構造体
+へのポインタを返すのではなく、 \fIprotoent\fP 構造体を \fIresult_buf\fP が
+指す場所にコピーする。
+
+.\" I can find no information on the required/recommended buffer size;
+.\" the nonreentrant functions use a 1024 byte buffer.
+.\" The 1024 byte value is also what the Solaris man page suggests. -- mtk
+配列 \fIbuf\fP は、返される \fIprotoent\fP 構造体が指す文字列フィールドを
+格納するのに使用される (リエントラントでない関数の場合は、
+これらの文字列は静的な領域に格納される)。
+この配列の大きさは \fIbuflen\fP で指定される。
+\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、
+呼び出し側ではもっと大きなバッファで再度呼び出す必要がある (ほとんどの
+アプリケーションでは、長さ 1024 バイトのバッファで十分なはずである)。
+
+関数呼び出しでプロトコルレコードの取得に成功すると、
+\fI*result\fP は \fIresult_buf\fP を指すように設定される。
+それ以外の場合は \fI*result\fP に NULL が設定される。
+.SH 返り値
+成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の
+リストにある正のエラー番号のいずれかを返す。
+
+エラーの場合、レコードが見つからなかった場合 (\fBgetprotobyname_r\fP(),
+\fBgetprotobyaddr_r\fP()) やこれ以上レコードがない場合
+(\fBgetprotoent_r\fP())、\fIresult\fP には NULL が設定される。
+.SH エラー
+.TP 
+\fBENOENT\fP
+(\fBgetprotoent_r\fP())  データベースにこれ以上レコードがない。
+.TP 
+\fBERANGE\fP
+\fIbuf\fP が小さすぎる。もっと大きなバッファにして
+(または \fIbuflen\fP を増やして) 再度呼び出すこと。
+.SH 準拠
+これらの関数は GNU による拡張である。
+他のシステムにも同様の名前の関数が存在する場合があるが、
+通常は関数の引き数が異なる。
+.SH 例
+以下のプログラムは、 \fBgetprotobyname_r\fP() を使って、最初のコマンド
+ライン引き数で指定された名前のプロトコルのレコードを取得する。
+二番目のコマンドライン引き数 (整数値) が指定された場合は、
+その値が \fIbuflen\fP の初期値として使用される。
+\fBgetprotobyname_r\fP() がエラー \fBERANGE\fP で失敗すると、プログラムは
+より大きなバッファサイズで再度 \fBgetprotobyname_r\fP を呼び出す。
+下記のシェルのセッションは、実行例を示している。
+.in +4n
+.nf
+
+$\fB ./a.out tcp 1\fP
+ERANGE! Retrying with larger buffer
+getprotobyname_r() returned: 0 (success)  (buflen=78)
+p_name=tcp; p_proto=6; aliases=TCP
+$\fB ./a.out xxx 1\fP
+ERANGE! Retrying with larger buffer
+getprotobyname_r() returned: 0 (success)  (buflen=100)
+Call failed/record not found
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <netdb.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#define MAX_BUF 10000
+
+int
+main(int argc, char *argv[])
+{
+    int buflen, erange_cnt, s;
+    struct protoent result_buf;
+    struct protoent *result;
+    char buf[MAX_BUF];
+    char **p;
+
+    if (argc < 2) {
+        printf("Usage: %s proto\-name [buflen]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    buflen = 1024;
+    if (argc > 2)
+        buflen = atoi(argv[2]);
+
+    if (buflen > MAX_BUF) {
+        printf("Exceeded buffer limit (%d)\en", MAX_BUF);
+        exit(EXIT_FAILURE);
+    }
+
+    erange_cnt = 0;
+    do {
+        s = getprotobyname_r(argv[1], &result_buf,
+                     buf, buflen, &result);
+        if (s == ERANGE) {
+            if (erange_cnt == 0)
+                printf("ERANGE! Retrying with larger buffer\en");
+            erange_cnt++;
+
+            /* Increment a byte at a time so we can see exactly
+               what size buffer was required */
+
+            buflen++;
+
+            if (buflen > MAX_BUF) {
+                printf("Exceeded buffer limit (%d)\en", MAX_BUF);
+                exit(EXIT_FAILURE);
+            }
+        }
+    } while (s == ERANGE);
+
+    printf("getprotobyname_r() returned: %s  (buflen=%d)\en",
+            (s == 0) ? "0 (success)" : (s == ENOENT) ? "ENOENT" :
+            strerror(s), buflen);
+
+    if (s != 0 || result == NULL) {
+        printf("Call failed/record not found\en");
+        exit(EXIT_FAILURE);
+    }
+
+    printf("p_name=%s; p_proto=%d; aliases=",
+                result_buf.p_name, result_buf.p_proto);
+    for (p = result_buf.p_aliases; *p != NULL; p++)
+        printf("%s ", *p);
+    printf("\en");
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBgetprotoent\fP(3), \fBprotocols\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man3/getrpcent_r.3 b/draft/man3/getrpcent_r.3
new file mode 100644 (file)
index 0000000..450c98a
--- /dev/null
@@ -0,0 +1,108 @@
+.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk
+.\"    <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETRPCENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+getrpcent_r, getrpcbyname_r, getrpcbynumber_r \- RPC エントリを
+取得する (リエントラント版)
+.SH 書式
+.nf
+\fB#include <netdb.h>\fP
+.sp
+\fBint getrpcent_r(struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getrpcbyname_r(const char *\fP\fIname\fP\fB,\fP
+\fB                struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getrpcbynumber_r(int \fP\fInumber\fP\fB,\fP
+\fB                struct rpcent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct rpcent **\fP\fIresult\fP\fB);\fP
+.sp
+.fi
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照):
+.ad l
+.in
+.sp
+\fBgetrpcent_r\fP(), \fBgetrpcbyname_r\fP(), \fBgetrpcbynumber_r\fP():
+.RS 4
+_BSD_SOURCE || _SVID_SOURCE
+.RE
+.ad b
+.SH 説明
+関数 \fBgetrpcent_r\fP(), \fBgetrpcbyname_r\fP(), \fBgetrpcbynumber_r\fP() は、
+それぞれ \fBgetrpcent\fP(3), \fBgetrpcbyname\fP(3), \fBgetrpcbynumber\fP(3) の
+リエントラント版である。
+\fIrpcent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。
+このマニュアルページでは、リエントラントでない関数との違いだけを
+説明する。
+
+これらの関数は、関数の結果として静的に割り当てられた \fIrpcent\fP 構造体
+へのポインタを返すのではなく、 \fIrpcent\fP 構造体を \fIresult_buf\fP が
+指す場所にコピーする。
+
+.\" I can find no information on the required/recommended buffer size;
+.\" the nonreentrant functions use a 1024 byte buffer -- mtk.
+配列 \fIbuf\fP は、返される \fIrpcent\fP 構造体が指す文字列フィールドを
+格納するのに使用される (リエントラントでない関数の場合は、
+これらの文字列は静的な領域に格納される)。
+この配列の大きさは \fIbuflen\fP で指定される。
+\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、
+呼び出し側ではもっと大きなバッファで再度呼び出す必要がある (ほとんどの
+アプリケーションでは、長さ 1024 バイトのバッファで十分なはずである)。
+
+関数呼び出しで RPC レコードの取得に成功すると、
+\fI*result\fP は \fIresult_buf\fP を指すように設定される。
+それ以外の場合は \fI*result\fP に NULL が設定される。
+.SH 返り値
+成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の
+リストにある正のエラー番号のいずれかを返す。
+
+エラーの場合、レコードが見つからなかった場合 (\fBgetrpcbyname_r\fP(),
+\fBgetrpcbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetrpcent_r\fP())、
+\fIresult\fP には NULL が設定される。
+.SH エラー
+.TP 
+\fBENOENT\fP
+(\fBgetrpcent_r\fP())  データベースにこれ以上レコードがない。
+.TP 
+\fBERANGE\fP
+\fIbuf\fP が小さすぎる。もっと大きなバッファにして
+(または \fIbuflen\fP を増やして) 再度呼び出すこと。
+.SH 準拠
+これらの関数は GNU による拡張である。
+他のシステムにも同様の名前の関数が存在する場合があるが、
+通常は関数の引き数が異なる。
+.SH 関連項目
+\fBgetrpcent\fP(3), \fBrpc\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man3/getservent_r.3 b/draft/man3/getservent_r.3
new file mode 100644 (file)
index 0000000..5b62584
--- /dev/null
@@ -0,0 +1,210 @@
+.\" Copyright 2008, Linux Foundation, written by Michael Kerrisk
+.\"    <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date.  The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.  The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH GETSERVENT_R 3 2010\-09\-10 GNU "Linux Programmer's Manual"
+.SH 名前
+getservent_r, getservbyname_r, getservbyport_r \- サービスエントリを
+取得する (リエントラント版)
+.SH 書式
+.nf
+\fB#include <netdb.h>\fP
+.sp
+\fBint getservent_r(struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getservbyname_r(const char *\fP\fIname\fP\fB, const char *\fP\fIproto\fP\fB,\fP
+\fB                struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
+.sp
+\fBint getservbyport_r(int \fP\fIport\fP\fB, const char *\fP\fIproto\fP\fB,\fP
+\fB                struct servent *\fP\fIresult_buf\fP\fB, char *\fP\fIbuf\fP\fB,\fP
+\fB                size_t \fP\fIbuflen\fP\fB, struct servent **\fP\fIresult\fP\fB);\fP
+.sp
+.fi
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.ad l
+.in
+.sp
+\fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP():
+.RS 4
+_BSD_SOURCE || _SVID_SOURCE
+.RE
+.ad b
+.SH 説明
+関数 \fBgetservent_r\fP(), \fBgetservbyname_r\fP(), \fBgetservbyport_r\fP() は、
+それぞれ \fBgetservent\fP(3), \fBgetservbyname\fP(3), \fBgetservbyport\fP(3) の
+リエントラント版である。
+\fIservent\fP 構造体の返し方と、関数呼び出し時の引き数と返り値が異なる。
+このマニュアルページでは、リエントラントでない関数との違いだけを
+説明する。
+
+これらの関数は、関数の結果として静的に割り当てられた \fIservent\fP 構造体
+へのポインタを返すのではなく、 \fIservent\fP 構造体を \fIresult_buf\fP が
+指す場所にコピーする。
+
+.\" I can find no information on the required/recommended buffer size;
+.\" the nonreentrant functions use a 1024 byte buffer -- mtk.
+配列 \fIbuf\fP は、返される \fIservent\fP 構造体が指す文字列フィールドを
+格納するのに使用される (リエントラントでない関数の場合は、
+これらの文字列は静的な領域に格納される)。
+この配列の大きさは \fIbuflen\fP で指定される。
+\fIbuf\fP が小さすぎる場合、関数呼び出しはエラー \fBERANGE\fP で失敗し、
+呼び出し側ではもっと大きなバッファで再度呼び出す必要がある (ほとんどの
+アプリケーションでは、長さ 1024 バイトのバッファで十分なはずである)。
+
+関数呼び出しでサービスレコードの取得に成功すると、
+\fI*result\fP は \fIresult_buf\fP を指すように設定される。
+それ以外の場合は \fI*result\fP に NULL が設定される。
+.SH 返り値
+成功すると、これらの関数は 0 を返す。エラーの場合、「エラー」の節の
+リストにある正のエラー番号のいずれかを返す。
+
+エラーの場合、レコードが見つからなかった場合 (\fBgetservbyname_r\fP(),
+\fBgetservbyaddr_r\fP()) やこれ以上レコードがない場合 (\fBgetservent_r\fP())、
+\fIresult\fP には NULL が設定される。
+.SH エラー
+.TP 
+\fBENOENT\fP
+(\fBgetservent_r\fP())  データベースにこれ以上レコードがない。
+.TP 
+\fBERANGE\fP
+\fIbuf\fP が小さすぎる。もっと大きなバッファにして
+(または \fIbuflen\fP を増やして) 再度呼び出すこと。
+.SH 準拠
+これらの関数は GNU による拡張である。
+他のシステムにも同様の名前の関数が存在する場合があるが、
+通常は関数の引き数が異なる。
+.SH 例
+以下のプログラムは、 \fBgetservbyport_r\fP() を使って、コマンド
+ライン引き数で指定されたポート番号とプロトコル名を持つ
+サービスレコードを取得する。
+三番目のコマンドライン引き数 (整数値) が指定された場合は、
+その値が \fIbuflen\fP の初期値として使用される。
+\fBgetservbyport_r\fP() がエラー \fBERANGE\fP で失敗すると、プログラムは
+より大きなバッファサイズで再度 \fBgetservbyport_r\fP を呼び出す。
+下記のシェルのセッションは実行例を示している。
+.in +4n
+.nf
+
+$\fB ./a.out 7 tcp 1\fP
+ERANGE! Retrying with larger buffer
+getservbyport_r() returned: 0 (success)  (buflen=87)
+s_name=echo; s_proto=tcp; s_port=7; aliases=
+$\fB ./a.out 77777 tcp\fP
+getservbyport_r() returned: 0 (success)  (buflen=1024)
+Call failed/record not found
+.fi
+.in
+.SS プログラムのソース
+\&
+.nf
+#define _GNU_SOURCE
+#include <ctype.h>
+#include <netdb.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#define MAX_BUF 10000
+
+int
+main(int argc, char *argv[])
+{
+    int buflen, erange_cnt, port, s;
+    struct servent result_buf;
+    struct servent *result;
+    char buf[MAX_BUF];
+    char *protop;
+    char **p;
+
+    if (argc < 3) {
+        printf("Usage: %s port\-num proto\-name [buflen]\en", argv[0]);
+        exit(EXIT_FAILURE);
+    }
+
+    port = htons(atoi(argv[1]));
+    protop = (strcmp(argv[2], "null") == 0 ||
+             strcmp(argv[2], "NULL") == 0) ?  NULL : argv[2];
+
+    buflen = 1024;
+    if (argc > 3)
+        buflen = atoi(argv[3]);
+
+    if (buflen > MAX_BUF) {
+        printf("Exceeded buffer limit (%d)\en", MAX_BUF);
+        exit(EXIT_FAILURE);
+    }
+
+    erange_cnt = 0;
+    do {
+        s = getservbyport_r(port, protop, &result_buf,
+                     buf, buflen, &result);
+        if (s == ERANGE) {
+            if (erange_cnt == 0)
+                printf("ERANGE! Retrying with larger buffer\en");
+            erange_cnt++;
+
+            /* Increment a byte at a time so we can see exactly
+               what size buffer was required */
+
+            buflen++;
+
+            if (buflen > MAX_BUF) {
+                printf("Exceeded buffer limit (%d)\en", MAX_BUF);
+                exit(EXIT_FAILURE);
+            }
+        }
+    } while (s == ERANGE);
+
+    printf("getservbyport_r() returned: %s  (buflen=%d)\en",
+            (s == 0) ? "0 (success)" : (s == ENOENT) ? "ENOENT" :
+            strerror(s), buflen);
+
+    if (s != 0 || result == NULL) {
+        printf("Call failed/record not found\en");
+        exit(EXIT_FAILURE);
+    }
+
+    printf("s_name=%s; s_proto=%s; s_port=%d; aliases=",
+                result_buf.s_name, result_buf.s_proto,
+                ntohs(result_buf.s_port));
+    for (p = result_buf.s_aliases; *p != NULL; p++)
+        printf("%s ", *p);
+    printf("\en");
+
+    exit(EXIT_SUCCESS);
+}
+.fi
+.SH 関連項目
+\fBgetservent\fP(3), \fBservices\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man5/networks.5 b/draft/man5/networks.5
new file mode 100644 (file)
index 0000000..3150d03
--- /dev/null
@@ -0,0 +1,76 @@
+.\" Copyright (c) 2001 Martin Schulze <joey@infodrom.org>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\" 2008-09-04, mtk, taken from Debian downstream, with a few light edits
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NETWORKS 5 2008\-09\-04 GNU/Linux "Linux System Administration"
+.SH 名前
+networks \- ネットワーク名の情報
+.SH 説明
+\fI/etc/networks\fP ファイルは、通常の ASCII ファイルで、よく使われる
+DARPA ネットワークとその分かりやすい名前を記載したファイルである。
+各行が一つのネットワークを表し、以下の構造となっている。
+
+.RS
+\fIname number aliases ...\fP
+.RE
+
+フィールドはスペースかタブで区切られる。空行は無視される。
+ハッシュ文字 (\fB#\fP) はコメントの開始を示し、このファイルを処理する
+ライブラリ関数はこの文字とその行のそれ以降の文字を無視する。
+
+フィールドの説明は以下のとおり。
+
+.TP 
+\fIname\fP
+ネットワークの分かりやすい名前 (symbolic name)。
+ネットワーク名には、ホワイトスペースとコメント文字以外の
+印字可能な文字を使うことができる。
+.TP 
+\fInumber\fP
+このネットワークの正式な数字での値。
+ドット区切りの数字表記 (\fBinet\fP(3) 参照) で記載する。
+末尾の ".0" (ネットワークアドレスのホスト部分) は省略してもよい。
+.TP 
+\fIaliases\fP
+そのネットワークの別名 (省略可能)。
+.LP
+
+このファイルは、 \fBroute\fP(8) と \fBnetstat\fP(8) ユーティリティにより
+利用される。クラス A, B, C のネットワークだけがサポートされており、
+(network/26 や network/28 といった) 分割されたネットワークは
+このファイルではサポートされていない。
+.SH ファイル
+.TP 
+\fI/etc/networks\fP
+ネットワーク定義ファイル。
+.SH 関連項目
+\fBgetnetbyaddr\fP(3), \fBgetnetbyname\fP(3), \fBgetnetent\fP(3), \fBnetstat\fP(8),
+\fBroute\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man5/nsswitch.conf.5 b/draft/man5/nsswitch.conf.5
new file mode 100644 (file)
index 0000000..ae15432
--- /dev/null
@@ -0,0 +1,276 @@
+.\" Copyright (c) 1998, 1999 Thorsten Kukuk (kukuk@vt.uni-paderborn.de)
+.\" Copyright (c) 2011, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"
+.\" This is free documentation; you can redistribute it and/or
+.\" modify it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2 of
+.\" the License, or (at your option) any later version.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+.\" MA 02111, USA.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NSSWITCH.CONF 5 2012\-04\-14 Linux "Linux Programmer's Manual"
+.SH 名前
+nsswitch.conf \- ネームサービススイッチの設定ファイル
+.SH 説明
+ネームサービススイッチ (Name Service Switch; NSS) の設定ファイル
+\fI/etc/nsswitch.conf\fP は、 GNU C ライブラリが
+いろいろなカテゴリの名前サービス情報を、どの情報源から
+どの順序で取得するかを判断するのに使用される
+(情報の各カテゴリはデータベース名で識別される)。
+.LP
+設定ファイルは通常の ASCII テキストで、列はスペースかタブ文字で
+区切られる。最初の列はデータベース名を示す。
+残りの列は、情報を問い合わせる情報源の順序と、
+検索結果に対して実行するアクションを規定する。
+.LP
+GNU C ライブラリでは以下のデータベースを扱うことができる。
+.TP  12
+\fBaliases\fP
+メールのエイリアス。 \fBgetaliasent\fP(3) や関連する関数が使用する。
+.TP 
+\fBethers\fP
+イーサーネット番号。
+.TP 
+\fBgroup\fP
+ユーザーのグループ。 \fBgetgrent\fP(3) や関連する関数が使用する。
+.TP 
+\fBhosts\fP
+ホスト名とホスト番号。 \fBgethostbyname\fP(3) や関連する関数が使用する。
+.TP 
+\fBnetgroup\fP
+ネットワークワイドに用いられるホストやユーザーのリスト。アクセス制限に利用
+される。 glibc 2.1 より前の C ライブラリは、 NIS による netgroup のみを
+サポートしていた。
+.TP 
+\fBnetworks\fP
+ネットワーク名と番号。 \fBgetnetent\fP(3) と関連する関数が使用する。
+.TP 
+\fBpasswd\fP
+ユーザーパスワード。 \fBgetpwent\fP(3) や関連する関数が使用する。
+.TP 
+\fBprotocols\fP
+ネットワークプロトコル。 \fBgetprotoent\fP(3) や関連する関数が使用する。
+.TP 
+\fBpublickey\fP
+NIS+ と NFS によって用いられる secure_rpc の公開鍵と秘密鍵。
+.TP 
+\fBrpc\fP
+リモート手続き呼び出し (remote procedure call) の名前と番号。
+\fBgetrpcbyname\fP(3) と関連する関数が使用する。
+.TP 
+\fBservices\fP
+ネットワークサービス。 \fBgetservent\fP(3) や関連する関数が使用する。
+.TP 
+\fBshadow\fP
+シャドウユーザーパスワード。 \fBgetspnam\fP(3) や関連する関数が使用する。
+.LP
+以下は \fI/etc/nsswitch.conf\fP ファイルの例である。
+.LP
+.RS 4
+.PD 0
+.TP  16
+passwd:
+compat
+.TP 
+group:
+compat
+.TP 
+shadow:
+compat
+.sp 1n
+.TP 
+hosts:
+dns [!UNAVAIL=return] files
+.TP 
+networks:
+nis [NOTFOUND=return] files
+.TP 
+ethers:
+nis [NOTFOUND=return] files
+.TP 
+protocols:
+nis [NOTFOUND=return] files
+.TP 
+rpc:
+nis [NOTFOUND=return] files
+.TP 
+services:
+nis [NOTFOUND=return] files
+.PD
+.RE
+.LP
+最初の列はデータベース名である。
+残りの列で以下を指定する。
+.IP * 3
+1 個以上のサービス指定 (例: "files", "db", "nis")。この行に記載された
+サービスの順序で、結果が得られるまで、指定されたサービスに対する
+問い合わせが順番に行われる。
+.IP *
+特定の結果が直前のサービスで得られた場合に実行されるアクション
+(例: "[NOTFOUND=return]")。アクションは省略可能である。
+.RE
+.LP
+利用しているシステムでどのサービス指定が利用できるかは、共有ライブラリ
+があるかどうかに依存しており、そのためサービス指定は拡張できるように
+なっている。\fI/lib/libnss_SERVICE.so.\fP\fBX\fP という名前のライブラリが
+\fISERVICE\fP という名前のサービスを提供する。標準のインストールを行った
+場合、"files", "db", "nis", "nisplus" が利用できる。
+データベース \fBhosts\fP の場合には、追加で "dns" も指定できる。
+データベース \fBpasswd\fP, \fBgroup\fP, \fBshadow\fP の場合には、追加で
+"compat" (下記の \fB互換モード\fP を参照)。バージョン番号 \fBX\fP は、
+glibc 2.0 の場合は 1、glibc 2.1 の場合は 2 で、それ以降も同様である。
+追加のライブラリがインストールされているシステムでは、"hesiod",
+"ldap", "winbind", "wins" などの追加のサービスが利用できる。
+.LP
+サービス指定の次にアクションを指定することもできる。アクションを
+使うと、直前のデータ源から結果が得られた後の動作を変更できる。
+アクション指定は、一般的には以下の形式となる。
+.LP
+.RS 4
+[\fISTATUS\fP=\fIACTION\fP]
+.br
+[!\fISTATUS\fP=\fIACTION\fP]
+.RE
+.LP
+STATUS と ACTION はそれぞれ以下の値を取る。
+.LP
+.RS 4
+\fISTATUS\fP => \fBsuccess\fP | \fBnotfound\fP | \fBunavail\fP | \fBtryagain\fP
+.br
+\fIACTION\fP => \fBreturn\fP | \fBcontinue\fP
+.RE
+.LP
+! はテスト結果を反転させる。
+つまり、指定された以外の全ての結果にマッチする。
+キーワードの大文字、小文字は無視される。
+.LP
+\fISTATUS\fP は、直前のサービス指定で呼び出しされた検索処理の結果に
+対して照合が行われる。 \fISTATUS\fP には以下のいずれかを指定できる。
+.RS 4
+.TP  12
+\fBsuccess\fP
+エラーは発生せず、要求されたエントリが返された。
+この場合のデフォルトのアクションは "return" である。
+.TP 
+\fBnotfound\fP
+検索は成功したが、要求されたエントリが見つからなかった。
+この場合のデフォルトのアクションは "continue" である。
+.TP 
+\fBunavail\fP
+サービスが永続的に利用できない。
+必要なファイルを読み込むことができない、
+ネットワークサービスの場合には、サーバが利用できないとか、
+サーバが問い合わせを許可していない、などが考えられる。
+この場合のデフォルトのアクションは "continue" である。
+.TP 
+\fBtryagain\fP
+サービスが一時的に利用できない。
+ファイルがロックされている、サーバがこれ以上接続を受け付けることができない、
+などが考えられる。デフォル トのアクションは "continue" である。
+.RE
+.LP
+\fIACTION\fP には以下のいずれかを指定できる。
+.RS 4
+.TP  12
+\fBreturn\fP
+この時点で結果を返す。これ以上の検索処理は行われない。
+.TP 
+\fBcontinue\fP
+次の検索処理を呼び出す。
+.RE
+.SS "互換モード (compat)"
+NSS "compat" サービスは "files" と似ているが、システムにアクセスできる
+ユーザやネットグループ (netgroup) のメンバの指定に \fI/etc/passwd\fP で
+特別なエントリを追加で使うことができる点が異なる。
+このモードでは、以下のエントリを使うことができる。
+.RS 4
+.TP  12
+\fB+\fP\fIuser\fP
+NIS パスワードマップの指定された \fIuser\fP を含める。
+.TP 
+\fB+@\fP\fInetgroup\fP
+指定された \fInetgroup\fP の全ユーザを含める。
+.TP 
+\fB\-\fP\fIuser\fP
+NIS パスワードマップの指定された \fIuser\fP を除外する。
+.TP 
+\fB\-@\fP\fInetgroup\fP
+指定された \fInetgroup\fP の全ユーザを除外する。
+.TP 
+\fB+\fP
+NIS パスワードマップのユーザのうち、
+それまでに除外されていない全てのユーザを含める。
+.RE
+.LP
+デフォルトでは、データ源は "nis" だが、
+擬似データベース \fBpasswd_compat\fP, \fBgroup_compat\fP, \fBshadow_compat\fP
+ではデータ源として "nisplus" を指定することもできる。
+.SH ファイル
+\fISERVICE\fP という名前のサービスは \fIlibnss_SERVICE.so.\fP\fBX\fP という
+名前の共有オブジェクトライブラリで実装されている。
+これは \fI/lib\fP に置かれる。
+.RS 4
+.TP  25
+.PD 0
+\fI/etc/nsswitch.conf\fP
+NSS の設定ファイル。
+.TP 
+\fI/lib/libnss_compat.so.\fP\fBX\fP
+"compat" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_db.so.\fP\fBX\fP
+"db" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_dns.so.\fP\fBX\fP
+"dns" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_files.so.\fP\fBX\fP
+"files" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_hesiod.so.\fP\fBX\fP
+"hesoid" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_nis.so.\fP\fBX\fP
+"nis" ソースを実装したもの。
+.TP 
+\fI/lib/libnss_nisplus.so.\fP\fBX\fP
+"nisplus" ソースを実装したもの。
+.PD
+.RE
+.SH 注意
+\fInsswitch.conf\fP を利用するプロセスは、ファイルは一度しか読み込まない。
+その後で nsswitch.conf が書き換えられても、そのプロセスは古い設定のままで
+動作を継続する。
+.LP
+伝統的には、サービス情報の情報源は一つだけであり、
+その設定ファイルの形式も一つであった (例えば \fI/etc/passwd\fP)。
+一方で、 Network Information Service (NIS) や Domain Name Service
+(DNS) などの他の名前サービスが一般的になるに連れて、C ライブラリに埋め
+込まれた固定順序ではなく、検索順序を柔軟に指定する方法が必要になった。
+ネームサービススイッチ機構は、この問題に対するよりきれいな解決方法と
+なっている。ネームサービススイッチ機構は、 Sun Microsystems が
+Solaris 2 の C ライブラリで使った機構が基になっている。
+.SH 関連項目
+\fBgetent\fP(1), \fBnss\fP(5)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man5/resolv.conf.5 b/draft/man5/resolv.conf.5
new file mode 100644 (file)
index 0000000..37e80f2
--- /dev/null
@@ -0,0 +1,181 @@
+.\" Copyright (c) 1986 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms are permitted
+.\" provided that the above copyright notice and this paragraph are
+.\" duplicated in all such forms and that any documentation,
+.\" advertising materials, and other materials related to such
+.\" distribution and use acknowledge that the software was developed
+.\" by the University of California, Berkeley.  The name of the
+.\" University may not be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\"    @(#)resolver.5  5.9 (Berkeley) 12/14/89
+.\"    $Id: resolver.5,v 8.6 1999/05/21 00:01:02 vixie Exp $
+.\"
+.\" Added ndots remark by Bernhard R. Link - debian bug #182886
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH RESOLV.CONF 5 2012\-04\-23 "" "Linux Programmer's Manual"
+.UC 4
+.SH 名前
+resolv.conf \- レゾルバ設定ファイル
+.SH 書式
+\fB/etc/resolv.conf\fP
+.SH 説明
+\fIresolver\fP は、インターネットのドメインネームシステム (DNS) へのアクセスを提供する C ライブラリのルーチン群である。
+レゾルバ設定ファイルには、レゾルバルーチンがプロセスによって最初に 起動されたときに読み込まれる情報が格納されている。
+このファイルは人間に可読なように設計されている。 キーワードと値のリストが含まれ、いろいろなタイプのレゾルバ情報を提供する。
+.LP
+普通に設定されたシステムでは、このファイルは必要ない。 問い合わせをされる唯一のネームサーバはローカルマシン上にある。
+ドメイン名はホスト名から決定され、 ドメインの検索パスはドメイン名から作成される。
+.LP
+この状態を変更するための設定オプションには、以下のようなものがある。
+.TP 
+\fBnameserver\fP ネームサーバの IP アドレス
+レゾルバが問い合わせをするネームサーバの (ドット表記の) インターネットアドレス。 このキーワード 1 つごとに 1 台づつ、 \fBMAXNS\fP 台
+(現状では 3 台、\fI<resolv.h>\fP を参照) までのネームサーバをリストできる。
+複数のサーバが指定された場合、レゾルバライブラリは リストされた順に問い合わせを行う。 \fBnameserver\fP エントリがない場合、
+デフォルトではローカルマシン上のネームサーバが使われる。 (ここで使われるアルゴリズムは以下のようなものである。
+はじめにネームサーバに問い合わせを試みる。 この問い合わせがタイムアウトになった場合、 次のネームサーバに問い合わせを試みる。
+これをネームサーバがなくなるまで続ける。 それでも応答がない場合は、リトライ最大回数に達するまで 全てのネームサーバに問い合わせを繰り返す。)
+.TP 
+\fBdomain\fP ローカルドメイン名
+このドメインにある名前の問い合わせのほとんどに、 このローカルドメインにおける短い名前を使用することができる。 \fBdomain\fP
+エントリがない場合、ドメイン名は \fBgethostname\fP(2)  で返されるローカルホスト名から決定され、 最初の \(aq.\(aq
+以降の全ての部分がドメイン名とされる。 このホスト名にもドメイン部を含んでいない場合、ルートドメインが仮定される。
+.TP 
+\fBsearch\fP ホスト名ルックアップのための検索リスト
+.\" When having a resolv.conv with a line
+.\"  search subdomain.domain.tld domain.tld
+.\" and doing a hostlookup, for example by
+.\"  ping host.anothersubdomain
+.\" it sends dns-requests for
+.\"  host.anothersubdomain.
+.\"  host.anothersubdomain.subdomain.domain.tld.
+.\"  host.anothersubdomain.domain.tld.
+.\" thus not only causing unnecessary traffic for the root-dns-servers
+.\" but broadcasting information to the outside and making man-in-the-middle
+.\" attacks possible.
+検索リストは通常ローカルドメイン名から決定される。 デフォルトでは、検索リストはローカルドメイン名のみである。 これを変更するには、\fIsearch\fP
+キーワードの後に 希望するドメイン検索パスをスペースまたはタブで区切ってリストすればよい。 ドットの数が \fIndots\fP (デフォルトでは 1)
+より少ないレゾルバの問い合わせは、 一致するものが見つかるまで検索パスの各要素を順に使って試す。 複数のサブドメインを持つ環境では、 第三者による攻撃
+(man\-in\-the\-middle attack) と ルート DNS サーバへの不必要なトラフィックを避けるために、 以下の \fBoptions
+ndots:\fP\fIn\fP を読んでほしい。 このプロセスは遅く、リストされたドメインがローカルのものでない場合、
+多大なネットワークトラフィックを発生させることに注意すること。 さらに、これらのドメインのいずれかひとつにでも適切なサーバがない場合、
+問い合わせがタイムアウトになる点にも注意すること。
+.IP
+現状では、検索リストは 6 ドメイン・計 256 文字に制限されている。
+.TP 
+\fBsortlist\fP
+このオプションを使うと、 \fBgethostbyname\fP(3)  で返されるアドレスをソートさせることができる。 sortlist は IP
+アドレスとネットマスクのペアで指定される。 ネットマスクは省略可能であり、 デフォルトではネットに対するデフォルトのネットマスクである。 IP
+アドレスとオプションのネットマスクのペアはスラッシュで区切る。 最大 10 組のペアを指定できる。 以下に例を示す。
+
+.in +4n
+sortlist 130.155.160.0/255.255.240.0 130.155.0.0
+.in
+.br
+.TP 
+\fBoptions\fP
+options により、レゾルバの内部変数を変更することができる。 書式は以下の通りである。
+.RS
+.IP
+\fBoptions\fP \fIoption\fP \fI...\fP
+.LP
+ここで \fIoption\fP は次のうちのいずれかである。
+.TP 
+\fBdebug\fP
+.\" Since glibc 2.2?
+\fI_res.options\fP に \fBRES_DEBUG\fP を設定する。
+.TP 
+\fBndots:\fP\fIn\fP
+.\" Since glibc 2.2
+「\fI最初の完全な名前での問い合わせ\fPが実行される前に、 \fBres_query\fP(3)  (\fBresolver\fP(3)  を参照)
+に与えられる名前に含まれているべきドットの数の閾値」を設定する。 \fIn\fP のデフォルトは 1 である。
+これは、名前にドットがある場合、\fIsearch list\fP の要素が付加される前に、
+その名前が完全な名前として最初に試されるということを意味している。 このオプションの値の上限は 15 であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBtimeout:\fP\fIn\fP
+.\" Since glibc 2.2
+「レゾルバが他のネームサーバで問い合わせをリトライする前に、 リモートネームサーバからの応答を待つ時間」を設定する。 単位は秒で、デフォルトは
+\fBRES_TIMEOUT\fP である (現状では 5 秒、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 30
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBattempts:\fP\fIn\fP
+「レゾルバが諦めて呼び出し元のアプリケーションにエラーを返すまでに、 ネームサーバに問い合わせを行う回数」を設定する。 デフォルトは
+\fBRES_DFLRETRY\fP 回である (現状では 2 回、\fI<resolv.h>\fP を参照)。 このオプションの値の上限は 5
+であり、黙ってこの値まで切り詰められる。
+.TP 
+\fBrotate\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に RES_ROTATE を設定する。 リストされているネームサーバから選ぶときに、 ラウンドロビン (round
+robin) 選択を行わせる。 リストされている全てのサーバで問い合わせの負荷を分散する効果があり、 最初にリストされたサーバに全てのクライアントが
+毎回最初に問い合わせを行うわけではなくなる。
+.TP 
+\fBno\-check\-names\fP
+.\" since glibc 2.2
+\fI_res.options\fP に \fBRES_NOCHECKNAME\fP を設定する。 入ってくるホスト名とメールアドレスに、 アンダースコア
+(_)・ASCII 以外の文字・制御文字といった 不正な文字が含まれていないかを調べる 最近の BIND のチェックを無効にする。
+.TP 
+\fBinet6\fP
+.\" Since glibc 2.2
+\fI_res.options\fP に \fBRES_USE_INET6\fP を設定する。このオプションが設定されると、 \fBgethostbyname\fP(3)
+関数の内部で A レコードの問い合わせを行う前に AAAA レコードの問い合わせを行うようになる。 また、AAAA レコードは見つからないが A
+レコードセットが存在する場合に、 IPv4 の応答を IPv6「トンネル形式」にマップするようになる。
+.TP 
+\fBip6\-bytestring\fP (glibc 2.3.4 以降)
+\fI_res.options\fP に \fBRES_USE_BSTRING\fP を設定する。このオプションが設定されると、IPv6 アドレスの逆引きで
+RFC\ 2673 で規定された bit\-label 形式が使用されるようになる。 このオプションが設定されない場合、nibble 形式が使用される。
+.TP 
+\fBip6\-dotint\fP/\fBno\-ip6\-dotint\fP (glibc 2.3.4 以降)
+\fI_res.options\fP への \fBRES_NOIP6DOTINT\fP のセット/クリアを行う。 このオプションがクリアされると
+(\fBip6\-dotint\fP)、 IPv6 アドレスの逆引きが (非推奨の)  \fIip6.int\fP ゾーンで行われるようになり、
+このオプションがセットされると (\fBno\-ip6\-dotint\fP)、 IPv6 アドレスの逆引きがデフォルトの \fIip6.arpa\fP
+ゾーンで行われるようになる。 このオプションはデフォルトでセットされる。
+.TP 
+\fBedns0\fP (glibc 2.6 以降)
+\fI_res.options\fP に \fBRES_USE_EDNSO\fP をセットする。これにより、RFC\ 2671 で規定されている DNS
+拡張のサポートが有効になる。
+.TP 
+\fBsingle\-request\fP (glibc 2.10 以降)
+\fI_res.options\fP に \fBRES_SNGLKUP\fP をセットする。
+glibc バージョン 2.9 以降では、 glibc はデフォルトでは
+IPv4 と IPv6 の検索を並行して実行する。
+アプライアンス DNS サーバの中には、このような問い合わせを
+適切に処理できず、検索要求がタイムアウトになってしまう。
+このオプションをセットすると、このデフォルトの動作が無効になり、
+glibc は IPv6 と IPv4 の検索を順番に実行するようになる
+(名前解決処理が若干遅くなるというデメリットがある)。
+.RE
+.LP
+\fIdomain\fP と \fIsearch\fP キーワードは、互いに排他的である。 これらのキーワードが 2 つ以上記述されている場合、
+最後に記述されているものが有効になる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIsearch\fP キーワードは、 スペースで区切った検索ドメインのリストを 環境変数
+\fBLOCALDOMAIN\fP に設定することにより、各プロセス毎に上書きすることができる。
+.LP
+システムの \fIresolv.conf\fP ファイルにある \fIoptions\fP キーワードは、 上の \fBoptions\fP セクションで説明したように、
+スペースで区切ったレゾルバオプションのリストを 環境変数 \fBRES_OPTIONS\fP に設定することにより、各プロセス毎に修正することができる。
+.LP
+キーワードと値は同じ行に書かなければならない。 また、(\fBnameserver\fP のような) キーワードが行の先頭になければならない。
+値はキーワードの後にスペースで区切って続ける。
+
+セミコロン (;) かハッシュ文字 (#) で始まる行はコメントとして扱われる。
+.SH ファイル
+\fI/etc/resolv.conf\fP, \fI<resolv.h>\fP
+.SH 関連項目
+\fBgethostbyname\fP(3), \fBresolver\fP(3), \fBhostname\fP(7), \fBnamed\fP(8)
+.br
+BIND のネームサーバオペレーションガイド
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。
diff --git a/draft/man7/netdevice.7 b/draft/man7/netdevice.7
new file mode 100644 (file)
index 0000000..95a6ae7
--- /dev/null
@@ -0,0 +1,247 @@
+.\" t
+.\" Don't change the first line, it tells man that tbl is needed.
+.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
+.\" Permission is granted to distribute possibly modified copies
+.\" of this page provided the header is included verbatim,
+.\" and in case of nontrivial modification author and date
+.\" of the modification is added to the header.
+.\" $Id: netdevice.7,v 1.10 2000/08/17 10:09:54 ak Exp $
+.\"
+.\" Modified, 2004-11-25, mtk, formatting and a few wording fixes
+.\"
+.\" Modified, 2011-11-02, <bidulock@openss7.org>, added many basic
+.\"  but missing ioctls, such as SIOCGIFADDR.
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH NETDEVICE 7 2012\-04\-26 Linux "Linux Programmer's Manual"
+.SH 名前
+netdevice \- Linux ネットワークデバイスへの低レベルアクセス
+.SH 書式
+\fB#include <sys/ioctl.h>\fP
+.br
+\fB#include <net/if.h>\fP
+.SH 説明
+この man ページでは、ネットワークデバイスを設定するために 用いるソケットインターフェースについて解説する。
+
+Linux はネットワークデバイスを設定するための標準的な ioctl を いくつか備えている。これらはどんなソケットのファイルディスクリプタにも
+用いることができる。ファミリーやタイプは何でもよい。 これらの ioctl は \fIifreq\fP 構造体を渡す。
+
+.in +4n
+.nf
+struct ifreq {
+    char ifr_name[IFNAMSIZ]; /* Interface name */
+    union {
+        struct sockaddr ifr_addr;
+        struct sockaddr ifr_dstaddr;
+        struct sockaddr ifr_broadaddr;
+        struct sockaddr ifr_netmask;
+        struct sockaddr ifr_hwaddr;
+        short           ifr_flags;
+        int             ifr_ifindex;
+        int             ifr_metric;
+        int             ifr_mtu;
+        struct ifmap    ifr_map;
+        char            ifr_slave[IFNAMSIZ];
+        char            ifr_newname[IFNAMSIZ];
+        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 にインターフェースの名前をセットすることによって行う。
+他の構造体の全てのメンバは、メモリを共有する。
+.SS ioctl
+「特権が必要」と記述されている ioctl を実行するには、 実効ユーザー ID が 0 か、 \fBCAP_NET_ADMIN\fP
+権限が必要である。これが満たされていない場合は \fBEPERM\fP が返される。
+.TP 
+\fBSIOCGIFNAME\fP
+\fIifr_ifindex\fP を受け取り、インターフェースの名前を \fIifr_name\fP に入れて返す。これは結果を \fIifr_name\fP
+として返す唯一の ioctl である。
+.TP 
+\fBSIOCGIFINDEX\fP
+インターフェースの interface index を取得し、 \fIifr_ifindex\fP に入れて返す。
+.TP 
+\fBSIOCGIFFLAGS\fP, \fBSIOCSIFFLAGS\fP
+デバイスの active フラグワードを取得または設定する。 \fIifr_flags\fP には以下の値のビットマスクが入る。
+.TS
+tab(:);
+c s
+l l.
+デバイスフラグ
+IFF_UP:インターフェースは動作中。
+IFF_BROADCAST:有効なブロードキャストアドレスがセットされている。
+IFF_DEBUG:内部のデバッグフラグ。
+IFF_LOOPBACK:インターフェースはループバックである。
+IFF_POINTOPOINT:インターフェースは point\-to\-point リンクである。
+IFF_RUNNING:リソースが割り当て済み。
+IFF_NOARP:arp プロトコルがない。
+IFF_PROMISC:インターフェースは promiscuous モードである。
+IFF_NOTRAILERS:trailer の利用を避ける。
+IFF_ALLMULTI:全てのマルチキャストパケットを受信する。
+IFF_MASTER:負荷分散グループのマスターである。
+IFF_SLAVE:負荷分散グループのスレーブである。
+IFF_MULTICAST:マルチキャストをサポートしている。
+IFF_PORTSEL:ifmap によってメディアタイプを選択できる。
+IFF_AUTOMEDIA:自動メディア選択が有効になっている。
+IFF_DYNAMIC:T{
+このインターフェースが閉じると、アドレスは失われる。
+T}
+IFF_LOWER_UP:ドライバからの L1 アップの通知 (Linux 2.6.17 以降)
+IFF_DORMANT:ドライバからの休止状態の通知 (Linux 2.6.17 以降)
+IFF_ECHO:送られたパケットをエコーする (Linux 2.6.25 以降)
+
+
+.TE
+active フラグワードの設定は特権が必要な操作である。
+読み出しはどんなプロセスからも可能である。
+.TP 
+\fBSIOCGIFPFLAGS\fP, \fBSIOCSIFPFLAGS\fP
+デバイスの拡張 (プライベート) フラグを取得または設定する。
+\fIifr_flags\fP には以下の値のビットマスクが入る。
+.TS
+tab(:);
+c s
+l l.
+プライベートフラグ
+IFF_802_1Q_VLAN:インターフェースは 802.1Q VLAN デバイスである。
+IFF_EBRIDGE:インターフェースは Ethernet ブリッジデバイスである。
+IFF_SLAVE_INACTIVE:インターフェースは非アクティブな bonding のスレーブである。
+IFF_MASTER_8023AD:インターフェースは 802.3ad bonding のマスターである。
+IFF_MASTER_ALB:インターフェースは balanced\-alb bonding のマスターである。
+IFF_BONDING:インターフェースは bonding のマスターかスレーブである。
+IFF_SLAVE_NEEDARP:インターフェースは検証に APR が必要である。
+IFF_ISATAP:インターフェースは RFC4214 ISATAP インターフェースである。
+.TE
+.sp
+拡張 (プライベート) インターフェースフラグの設定には特権が必要である。
+.TP 
+\fBSIOCGIFADDR\fP, \fBSIOCSIFADDR\fP
+\fIifr_addr\fP を用いてデバイスのアドレスの設定/取得を行う。
+インターフェースのアドレスの設定は特権が必要な操作である。
+互換性確保のため、設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
+.TP 
+\fBSIOCGIFDSTADDR\fP, \fBSIOCSIFDSTADDR\fP
+point\-to\-point デバイスの宛先アドレスを \fIifr_dstaddr\fP を用いて
+設定/取得する。互換性確保のため、
+設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
+宛先アドレスの設定は特権が必要な操作である。
+.TP 
+\fBSIOCGIFBRDADDR\fP, \fBSIOCSIFBRDADDR\fP
+デバイスのブロードキャストアドレスを \fIifr_brdaddr\fP を用いて
+設定/取得する。互換性確保のため、
+設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
+ブロードキャストアドレスの設定は特権が必要な操作である。
+.TP 
+\fBSIOCGIFNETMASK\fP, \fBSIOCSIFNETMASK\fP
+デバイスのネットワークマスクを \fIifr_netmask\fP を用いて
+設定/取得する。互換性確保のため、
+設定/取得ができるのは \fBAF_INET\fP アドレスだけである。
+ネットワークマスクの設定は特権が必要な操作である。
+.TP 
+\fBSIOCGIFMETRIC\fP, \fBSIOCSIFMETRIC\fP
+デバイスのメトリックを \fIifr_metric\fP を用いて取得・設定する。 これはまだ実装されていない。読み出そうとすると \fIifr_metric\fP
+に 0 をセットして返り、設定しようとすると \fBEOPNOTSUPP\fP が返る。
+.TP 
+\fBSIOCGIFMTU\fP, \fBSIOCSIFMTU\fP
+デバイスの MTU (Maximum Transfer Unit) を \fIifr_mtu\fP を用いて取得・設定する。 MTU
+の設定は特権が必要な操作である。 MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。
+.TP 
+\fBSIOCGIFHWADDR\fP, \fBSIOCSIFHWADDR\fP
+デバイスのハードウェアアドレスを \fIifr_hwaddr\fP を用いて取得・設定する。 ハードウェアアドレスは \fIsockaddr\fP
+構造体に設定される。 \fIsa_family\fP には ARPHRD_* デバイスタイプが入り、 \fIsa_data\fP にはバイト 0 から始まる L2
+ハードウェアアドレスが入る。 ハードウェアアドレスの設定は特権が必要な操作である。
+.TP 
+\fBSIOCSIFHWBROADCAST\fP
+デバイスのハードウェアブロードキャストアドレスを \fIifr_hwaddr\fP の値に設定する。この操作には特権が必要である。
+.TP 
+\fBSIOCGIFMAP\fP, \fBSIOCSIFMAP\fP
+インターフェースのハードウェアのパラメータを \fIifr_map\fP を用いて取得・設定する。 パラメータの設定は特権が必要な操作である。
+
+.in +4n
+.nf
+struct ifmap {
+    unsigned long   mem_start;
+    unsigned long   mem_end;
+    unsigned short  base_addr;
+    unsigned char   irq;
+    unsigned char   dma;
+    unsigned char   port;
+};
+.fi
+.in
+
+ifmap 構造体の解釈はデバイスドライバとアーキテクチャに依存する。
+.TP 
+\fBSIOCADDMULTI\fP, \fBSIOCDELMULTI\fP
+デバイスのリンク層のマルチキャストフィルターから、 \fIifr_hwaddr\fP のアドレスを追加・削除する。これらの操作には特権が必要である。
+別の方法が \fBpacket\fP(7)  で解説されている。
+.TP 
+\fBSIOCGIFTXQLEN\fP, \fBSIOCSIFTXQLEN\fP
+デバイスの送信キューの長さを \fIifr_qlen\fP に取得・設定する。送信キューの長さの設定には特権が必要である。
+.TP 
+\fBSIOCSIFNAME\fP
+\fIifr_name\fP で指定したインターフェースの名前を \fIifr_newname\fP に変更する。この操作には特権が必要である。インターフェースが
+up していない 時にのみ使用できる。
+.TP 
+\fBSIOCGIFCONF\fP
+.\" Slaving isn't supported in 2.2
+.\" .
+.\" .TP
+.\" .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
+.\" Get or set the slave device using
+.\" .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 を返す。 オーバーフローはエラーとは見なされない。
+.PP
+ほとんどのプロトコルには、専用のインターフェースオプションを 設定するための独自の ioctl が存在する。 説明は各プロトコルの man
+ページを見よ。
+.PP
+さらに、デバイスによってはプライベートな ioctl がある。 これらはここでは説明しない。
+.SH 注意
+厳密にいうと、 \fBSIOCGIFCONF\fP や、 \fBAF_INET\fP ソケットアドレスだけを
+引き数に取ったり返したりする他の ioctl は IP 固有であり、 \fBip\fP(7)
+に属する。
+.LP
+アドレスがなかったり、 \fBIFF_RUNNING\fP フラグがセットされていないインターフェースの名前は \fI/proc/net/dev\fP
+で知ることができる。
+.LP
+ローカル IPV6 IP アドレスは \fI/proc/net\fP か \fBrtnetlink\fP(7)  で知ることができる。
+.SH バグ
+glibc 2.1 では \fI<net/if.h>\fP に \fIifr_newname\fP マクロがない。
+とりあえずの対応策として、以下のコードを追加しておくこと。
+.sp
+.in +4n
+.nf
+#ifndef ifr_newname
+#define ifr_newname     ifr_ifru.ifru_slave
+#endif
+.fi
+.in
+.SH 関連項目
+\fBproc\fP(5), \fBcapabilities\fP(7), \fBip\fP(7), \fBrtnetlink\fP(7)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.40 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。