diff --git a/ja_JP.eucJP/man/man2/getsockopt.2 b/ja_JP.eucJP/man/man2/getsockopt.2 index be0a3d8244..ca38c8c71c 100644 --- a/ja_JP.eucJP/man/man2/getsockopt.2 +++ b/ja_JP.eucJP/man/man2/getsockopt.2 @@ -1,400 +1,400 @@ .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95 .\" %FreeBSD: src/lib/libc/sys/getsockopt.2,v 1.28 2002/12/19 09:40:25 ru Exp % .\" .\" $FreeBSD$ .Dd May 2, 1995 .Dt GETSOCKOPT 2 .Os .Sh 名称 .Nm getsockopt , .Nm setsockopt .Nd ソケットのオプションの取得と設定 .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/socket.h .Ft int .Fn getsockopt "int s" "int level" "int optname" "void *optval" "socklen_t *optlen" .Ft int .Fn setsockopt "int s" "int level" "int optname" "const void *optval" "socklen_t optlen" .Sh 解説 .Fn getsockopt と .Fn setsockopt システムコールは、ソケットに対応する .Em オプション を操作します。 オプションは複数のプロトコルレベルに存在する可能性があります。 これらは必ず最上位の .Dq ソケット レベルに存在します。 .Pp ソケットオプションを操作する際は、オプションが常駐するレベル およびオプションの名前を指定する必要があります。 ソケットレベルでオプションを操作するには .Fa level を .Dv SOL_SOCKET として指定します。 他のレベルでオプションを操作するには、 オプションを制御している適切なプロトコルのプロトコル番号を指定します。 例えば、オプションが .Tn TCP プロトコルによって解釈されることを指示するには、 .Fa level を .Tn TCP のプロトコル番号に設定する必要があります。 .Xr getprotoent 3 を参照してください。 .Pp .Fa optval と .Fa optlen 引数は、 .Fn setsockopt がオプション値にアクセスするために使用されます。 .Fn getsockopt の場合、これらは要求されたオプションの値が返される バッファを識別します。 .Fn getsockopt の場合、 .Fa optlen は値と結果の引数であり、初期には .Fa optval の指すバッファのサイズが入っており、戻り時に修正されて 返された値の実際のサイズを示すようになります。 オプション値を指定しないか、またはオプション値が返されない場合、 .Fa optval に NULL を指定してもかまいません。 .Pp .Fa optname 引数および指定のオプションは、解釈されずに、 解釈用の該当プロトコルモジュールに渡されます。 インクルードファイル .Ao Pa sys/socket.h Ac には後述するソケットレベルオプション用の定義が入っています。 他のプロトコルレベルのオプションは形式と名称がさまざまです。 マニュアルのセクション 4 の該当するエントリを参照してください。 .Pp ほとんどのソケットレベルのオプションは .Fa optval 用に .Vt int 引数を使用します。 .Fn setsockopt の場合、ブール演算を有効にするためには引数は 0 でない必要があり、 オプションを無効にする場合は 0 である必要があります。 .Dv SO_LINGER は、 .Ao Pa sys/socket.h Ac で定義された .Vt "struct linger" 引数を使用します。 これは、目的の状態のオプションとリンガ間隔 (後述) を指定します。 .Dv SO_SNDTIMEO と .Dv SO_RCVTIMEO は、 .Ao Pa sys/time.h Ac で定義された .Vt "struct timeval" 引数を使用します。 .Pp 以降のオプションがソケットレベルで認識されます。 別記した場合を除いて、各オプションが .Fn getsockopt で調べられ、 .Fn setsockopt で設定されます。 .Bl -column SO_ACCEPTFILTER -offset indent .It Dv SO_DEBUG Ta "デバッグ情報の記録を有効にします" .It Dv SO_REUSEADDR Ta "ローカルアドレスの再使用を有効にします" .It Dv SO_REUSEPORT Ta "重複したアドレスとポートのバインドを有効にします" .It Dv SO_KEEPALIVE Ta "接続を保持することを有効にします" .It Dv SO_DONTROUTE Ta "発信メッセージについて経路設定バイパスを有効にします" .It Dv SO_LINGER Ta "データが存在する場合はクローズで遅延します" .It Dv SO_BROADCAST Ta "ブロードキャストメッセージを送信するパーミッションを有効にします" .It Dv SO_OOBINLINE Ta "バンド内でのバンド外データの受信を有効にします" .It Dv SO_SNDBUF Ta "出力用のバッファサイズを設定します" .It Dv SO_RCVBUF Ta "入力用のバッファサイズを設定します" .It Dv SO_SNDLOWAT Ta "出力用の最小カウントを設定します" .It Dv SO_RCVLOWAT Ta "入力用の最小カウントを設定します" .It Dv SO_SNDTIMEO Ta "出力についてのタイムアウト値を設定します" .It Dv SO_RCVTIMEO Ta "入力についてのタイムアウト値を設定します" -.It Dv SO_ACCEPTFILTER Ta "待ち受けソケットでの受け取り用フィルタを設定します" +.It Dv SO_ACCEPTFILTER Ta "待ち受けソケットでの accept フィルタを設定します" .It Dv SO_TYPE Ta "ソケットのタイプを取得します (取得のみ)" .It Dv SO_ERROR Ta "ソケットのエラーを取得してクリアします (取得のみ)" .El .Pp .Dv SO_DEBUG は下層のプロトコルモジュール内でデバッグを有効にします。 .Dv SO_REUSEADDR は、 .Xr bind 2 システムコールで指定されたアドレスを検証するのに使用する規則で、 ローカルアドレスの再利用が可能であることを示します。 .Dv SO_REUSEPORT は、ポートをバインドする前の複数のプロセスがすべて .Dv SO_REUSEPORT を設定している場合に、 複数のプロセスによる完全に重複したバインドが可能になるようにします。 このオプションは、プログラムの複数のインスタンスそれぞれが、 バインドされたポートを宛先とする UDP/IP マルチキャストまたは ブロードキャストのデータグラムを受信できるようにします。 .Dv SO_KEEPALIVE は接続されたソケット上でメッセージの周期的な送信を有効にします。 接続された一方がこれらのメッセージに応答できない場合は 接続が破壊されていると考えられ、ソケットを使用しているプロセスは データを送信しようとするときに .Dv SIGPIPE シグナルによって通知を受けます。 .Dv SO_DONTROUTE は発信メッセージが標準の経路設定機能をバイパスする必要があることを示します。 代わりに、メッセージは、宛先アドレスのネットワーク部分に従って 該当するネットワークインタフェースに転送されます。 .Pp .Dv SO_LINGER は送信されていないメッセージがソケットの待ち行列にあり、しかも .Xr close 2 が実行される時に行われる処置を制御します。 ソケットがデータの信頼できる配信を確約し、しかも .Dv SO_LINGER が設定されている場合、 データを送信できるまで または情報を配信できない (リンガ間隔と呼ばれるタイムアウト時間は、 .Dv SO_LINGER が要求されるときに .Fn setsockopt システムコール内で秒単位で指定されます) と判定するまで、システムはプロセスを .Xr close 2 上でブロックします。 .Dv SO_LINGER が無効の状態で .Xr close 2 が起動されると、システムは、プロセスが可能な限り迅速に処理を 継続できる方法でクローズ処理を行います。 .Pp オプション .Dv SO_BROADCAST は、ソケット上でブロードキャストデータグラムを送信するパーミッションを 要求します。 ブロードキャストは、システムの初期バージョンでは特権操作でした。 バンド外のデータをサポートするプロトコルで、 .Dv SO_OOBINLINE オプションは、バンド外のデータが受信された順番で通常の データ入力待ち行列に配置されることを要求します。 そして、これは .Dv MSG_OOB フラグなしに .Xr recv 2 呼び出しまたは .Xr read 2 呼び出しでアクセスできます。 常に このオプションが設定されているかのように動作する プロトコルもあります。 .Dv SO_SNDBUF と .Dv SO_RCVBUF は、それぞれ、出力および入力用に割り当てられる通常のバッファサイズを 調整するオプションです。 バッファのサイズは、高ボリューム接続のために増加することができますし、 着信データの可能なバックログを 制限するために減少させることもできます。 システムはこれらの値について 1 つの絶対最大値を設定します。 この最大値は .Xr sysctl 3 MIB 変数 .Dq Li kern.ipc.maxsockbuf によってアクセスできます。 .Pp .Dv SO_SNDLOWAT は出力操作に最小カウントを設定するオプションです。 ほとんどの出力操作は、送信用のプロトコルにデータを配信し、 フロー制御のためにブロックしながら呼び出しによって与えられた すべてのデータを処理します。 ノンブロッキング出力操作は、ブロックなしのフロー制御に従って 許容される限界までデータを処理しますが、フロー制御が 最低基準値または要求全体のいずれか小さい方を処理することを許容しない 場合はデータを処理しません。 ソケットへの書込み能力を試験する .Xr select 2 操作が真で返るのは、最低基準値を処理できる場合だけです。 .Dv SO_SNDLOWAT のデフォルト値はネットワーク効率性のために 適切なサイズ (多くの場合は 1024) に設定されます。 .Dv SO_RCVLOWAT は入力操作の最小カウントを設定するオプションです。 一般に、受信呼び出しは、いくらかの (0 でない) データが 受信されるまでブロックしてから、利用できる量または 要求された量のいずれか少ない方とともに戻ります。 .Dv SO_RCVLOWAT のデフォルト値は 1 です。 .Dv SO_RCVLOWAT にもっと大きな値が設定されている場合、 受信呼び出しのブロックは通常、最低基準値または 要求された量のいずれか小さい方が受信されるまで待機します。 受信呼び出しは、エラーが発生したり、シグナルが捕らえられたり、 または受信待ち行列内の次のデータのタイプが返されたものと異なる場合は、 最低基準値より小さい値でも戻ることがあります。 .Pp .Dv SO_SNDTIMEO は出力操作についてタイムアウト値を設定するオプションです。 これは、出力操作完了の待機を制限するために使用される秒数、 マイクロ秒数を .Vt "struct timeval" 引数で指定します。 送信操作が指定された時間以上ブロックされた場合、部分的なカウントで戻るか、 またはデータが送信されていない場合はエラー .Er EWOULDBLOCK で戻ります。 現在の実装では、このタイマは追加の各データがプロトコルに 配信されるたびに再起動され、これはサイズが出力用の最低基準値から 最高基準値の範囲に至る出力部分に適用されることを意味します。 .Dv SO_RCVTIMEO は入力操作についてタイムアウト値を設定するオプションです。 これは入力操作完了の待機を制限するために使用される秒数、マイクロ秒数を .Vt "struct timeval" 引数で指定します。 現在の実装では、このタイマは追加のデータがプロトコルによって 受信されるたびに再起動されるので、 制限は実際には休止期間のタイマとなります。 追加のデータを受信することなく受信操作がこれだけの時間について ブロックされた場合、短いカウントで戻るか、 またはデータが受信されていない場合はエラー .Er EWOULDBLOCK で戻ります。 .Pp .Dv SO_ACCEPTFILTER は、ソケット上に .Xr accept_filter 9 を置きます。 これにより、待ち受けしているストリームソケットに入ってくる接続が .Xr accept 2 に渡される前にフィルタされることになります。 念のため繰り返します。 フィルタをソケット上にインストールする前に、ソケットに対して .Xr listen 2 呼び出す必要があります。 そうしないと .Fn setsockopt システムコールが失敗します。 .Bd -literal struct accept_filter_arg { char af_name[16]; char af_arg[256-16]; }; .Ed .Pp .Fa optval 引数は .Fa struct accept_filter_arg を指さなくてはなりません。 この構造体が .Xr accept_filter 9 を選択、設定します。 .Fa af_name 引数は、アプリケーションが待ち受けソケット上に置きたいと思っている -受け取り用フィルタの名前で埋めなくてはなりません。 +accept フィルタの名前で埋めなくてはなりません。 オプションの引数 .Fa af_arg は、 .Fa af_name -で指定された受け取り用フィルタに渡すことができるものです。 +で指定された accept フィルタに渡すことができるものです。 これにより、ソケットに置かれる時にさらなる設定オプションを 提供します。 NULL を .Fa optval 中で渡すと、フィルタが削除されます。 .Pp 最後に、 .Dv SO_TYPE と .Dv SO_ERROR は .Fn getsockopt でだけ使用されるオプションです。 .Dv SO_TYPE では .Dv SOCK_STREAM のようなソケットのタイプが返ります。 これはスタートアップ時にソケットを継承するようなサーバに便利です。 .Dv SO_ERROR はソケット上で延期中のエラーを返し、エラー状態をクリアします。 これは接続されたデータグラムソケット上の非同期的エラーをチェックしたり、 その他の非同期エラーをチェックするのに使用できます。 .Sh 戻り値 .Rv -std .Sh エラー 呼び出しは次の場合を除いて正常です: .Bl -tag -width Er .It Bq Er EBADF 引数 .Fa s が有効な記述子ではありません。 .It Bq Er ENOTSOCK 引数 .Fa s がソケットではなくファイルです。 .It Bq Er ENOPROTOOPT 指示されたレベルでオプションは存在しません。 .It Bq Er EFAULT .Fa optval が指すアドレスがプロセスアドレス空間の有効な部分にありません。 .Fn getsockopt では、 .Fa optlen がプロセスアドレス空間の有効な部分でない場合も、 このエラーが返される可能性があります。 .It Bq Er EINVAL 待ち受けていないソケットに対して .Xr accept_filter 9 のインストールを試みました。 .El .Sh 関連項目 .Xr ioctl 2 , .Xr socket 2 , .Xr getprotoent 3 , .Xr sysctl 3 , .Xr protocols 5 , .Xr sysctl 8 , .Xr accept_filter 9 .Sh バグ ソケットオプションのいくつかはシステムの低いレベルで処理される必要があります。 .Sh 歴史 .Fn getsockopt システムコールは .Bx 4.2 ではじめて登場しました。 diff --git a/ja_JP.eucJP/man/man9/Makefile b/ja_JP.eucJP/man/man9/Makefile index 66f34d5416..ea485ef38a 100644 --- a/ja_JP.eucJP/man/man9/Makefile +++ b/ja_JP.eucJP/man/man9/Makefile @@ -1,256 +1,259 @@ # $FreeBSD$ MAN9 = BUS_PRINT_CHILD.9\ BUS_READ_IVAR.9\ BUS_SETUP_INTR.9\ DECLARE_MODULE.9\ DELAY.9\ DEVICE_ATTACH.9\ DEVICE_DETACH.9\ DEVICE_IDENTIFY.9\ DEVICE_PROBE.9\ DEVICE_SHUTDOWN.9\ DEV_MODULE.9\ DRIVER_MODULE.9\ KASSERT.9\ MD5.9\ MODULE_DEPEND.9\ MODULE_VERSION.9\ SYSCALL_MODULE.9\ VFS.9\ VFS_CHECKEXP.9\ VFS_FHTOVP.9\ VFS_INIT.9\ VFS_MOUNT.9\ VFS_QUOTACTL.9\ VFS_ROOT.9\ VFS_START.9\ VFS_STATFS.9\ VFS_SYNC.9\ VFS_UNMOUNT.9\ VFS_VGET.9\ VFS_VPTOFH.9\ VOP_ACCESS.9\ VOP_ACLCHECK.9\ VOP_ADVLOCK.9\ VOP_ATTRIB.9\ VOP_BWRITE.9\ VOP_CREATE.9\ VOP_FSYNC.9\ VOP_GETACL.9\ VOP_GETEXTATTR.9\ VOP_GETPAGES.9\ VOP_INACTIVE.9\ VOP_IOCTL.9\ VOP_LEASE.9\ VOP_LINK.9\ VOP_LOCK.9\ VOP_LOOKUP.9\ VOP_OPENCLOSE.9\ VOP_PATHCONF.9\ VOP_PRINT.9\ VOP_RDWR.9\ VOP_READDIR.9\ VOP_READLINK.9\ VOP_REALLOCBLKS.9\ VOP_REMOVE.9\ VOP_RENAME.9\ VOP_SETACL.9\ VOP_SETEXTATTR.9\ VOP_STRATEGY.9\ acl.9\ + accept_filter.9\ + accf_data.9\ + accf_http.9\ bios.9\ boot.9\ buf.9\ bus_alloc_resource.9\ bus_generic_attach.9\ bus_generic_detach.9\ bus_generic_print_child.9\ bus_generic_read_ivar.9\ bus_generic_shutdown.9\ bus_release_resource.9\ cd.9\ copy.9\ devclass.9\ devclass_add_driver.9\ devclass_find.9\ devclass_get_device.9\ devclass_get_devices.9\ devclass_get_maxunit.9\ devclass_get_name.9\ devclass_get_softc.9\ device.9\ device_add_child.9\ device_delete_child.9\ device_enable.9\ device_find_child.9\ device_get_children.9\ device_get_devclass.9\ device_get_driver.9\ device_get_ivars.9\ device_get_softc.9\ device_get_state.9\ device_get_unit.9\ device_probe_and_attach.9\ device_quiet.9\ device_set_desc.9\ device_set_flags.9\ devstat.9\ devtoname.9\ driver.9\ extattr.9\ fetch.9\ inittodr.9\ intro.9\ kernacc.9\ make_dev.9\ malloc.9\ mi_switch.9\ microseq.9\ microtime.9\ microuptime.9\ module.9\ panic.9\ physio.9\ psignal.9\ resettodr.9\ sbuf.9\ sleep.9\ spl.9\ store.9\ style.9\ suser.9\ sysctl_add_oid.9\ sysctl_ctx_init.9\ time.9\ timeout.9\ tvtohz.9\ uio.9\ vfs_unmountall.9\ vget.9\ vnode.9\ vput.9\ vref.9\ vrele.9\ vslock.9\ zone.9 MLINKS+=BUS_SETUP_INTR.9 bus_setup_intr.9 MLINKS+=BUS_SETUP_INTR.9 BUS_TEARDOWN_INTR.9 MLINKS+=BUS_SETUP_INTR.9 bus_teardown_intr.9 MLINKS+=DRIVER_MODULE.9 MULTI_DRIVER_MODULE.9 MLINKS+=MD5.9 MD5Init.9 MD5.9 MD5Transform.9 MLINKS+=VOP_ATTRIB.9 VOP_GETATTR.9 MLINKS+=VOP_ATTRIB.9 VOP_SETATTR.9 MLINKS+=VOP_CREATE.9 VOP_MKDIR.9 MLINKS+=VOP_CREATE.9 VOP_MKNOD.9 MLINKS+=VOP_CREATE.9 VOP_SYMLINK.9 MLINKS+=VOP_GETPAGES.9 VOP_PUTPAGES.9 MLINKS+=VOP_INACTIVE.9 VOP_RECLAIM.9 MLINKS+=VOP_LOCK.9 VOP_ISLOCKED.9 MLINKS+=VOP_LOCK.9 VOP_UNLOCK.9 MLINKS+=VOP_LOCK.9 vn_lock.9 MLINKS+=VOP_OPENCLOSE.9 VOP_CLOSE.9 MLINKS+=VOP_OPENCLOSE.9 VOP_OPEN.9 MLINKS+=VOP_RDWR.9 VOP_READ.9 MLINKS+=VOP_RDWR.9 VOP_WRITE.9 MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9 MLINKS+=copy.9 copyin.9 copy.9 copyinstr.9 copy.9 copyout.9 copy.9 copystr.9 MLINKS+=devstat.9 devicestat.9 MLINKS+=devstat.9 devstat_add_entry.9 MLINKS+=devstat.9 devstat_remove_entry.9 MLINKS+=devstat.9 devstat_start_transaction.9 MLINKS+=devstat.9 devstat_end_transaction.9 MLINKS+=fetch.9 fubyte.9 fetch.9 fuswintr.9 fetch.9 fusword.9 fetch.9 fuword.9 #MLINKS+=ifnet.9 if_data.9 ifnet.9 ifaddr.9 ifnet.9 ifqueue.9 MLINKS+=kernacc.9 useracc.9 MLINKS+=make_dev.9 dev_depends.9 MLINKS+=make_dev.9 destroy_dev.9 MLINKS+=make_dev.9 make_dev_alias.9 MLINKS+=malloc.9 FREE.9 malloc.9 MALLOC.9 malloc.9 free.9 MLINKS+=malloc.9 realloc.9 malloc.9 reallocf.9 MLINKS+=mi_switch.9 cpu_switch.9 mi_switch.9 cpu_throw.9 MLINKS+=psignal.9 gsignal.9 MLINKS+=psignal.9 pgsignal.9 #MLINKS+=rtalloc.9 rtalloc1.9 rtalloc.9 rtalloc_ign.9 MLINKS+=sleep.9 tsleep.9 sleep.9 wakeup.9 sleep.9 wakeup_one.9 MLINKS+=sleep.9 msleep.9 MLINKS+=buf.9 bp.9 MLINKS+=spl.9 spl0.9 MLINKS+=spl.9 splbio.9 spl.9 splclock.9 spl.9 splhigh.9 spl.9 splimp.9 MLINKS+=spl.9 splnet.9 spl.9 splsoftclock.9 spl.9 splsofttty.9 MLINKS+=spl.9 splstatclock.9 spl.9 spltty.9 spl.9 splvm.9 spl.9 splx.9 MLINKS+=store.9 subyte.9 store.9 suswintr.9 store.9 susword.9 store.9 suword.9 MLINKS+=time.9 boottime.9 time.9 mono_time.9 time.9 runtime.9 MLINKS+=timeout.9 untimeout.9 MLINKS+=timeout.9 callout_handle_init.9 timeout.9 callout_init.9 MLINKS+=timeout.9 callout_stop.9 timeout.9 callout_reset.9 MLINKS+=uio.9 uiomove.9 MLINKS+=vref.9 VREF.9 MLINKS+=vslock.9 vsunlock.9 MLINKS+=device_add_child.9 device_add_child_ordered.9 MLINKS+=device_enable.9 device_disable.9 MLINKS+=device_enable.9 device_is_enabled.9 MLINKS+=device_get_ivars.9 device_set_ivars.9 MLINKS+=device_get_state.9 device_busy.9 MLINKS+=device_get_state.9 device_unbusy.9 MLINKS+=device_get_state.9 device_is_alive.9 MLINKS+=device_get_state.9 device_is_attached.9 MLINKS+=device_quiet.9 device_verbose.9 MLINKS+=device_quiet.9 device_is_quiet.9 MLINKS+=device_set_desc.9 device_get_desc.9 MLINKS+=device_set_desc.9 device_set_desc_copy.9 MLINKS+=device_set_flags.9 device_get_flags.9 MLINKS+=devclass_add_driver.9 devclass_delete_driver.9 MLINKS+=devclass_add_driver.9 devclass_find_driver.9 MLINKS+=BUS_READ_IVAR.9 BUS_WRITE_IVAR.9 MLINKS+=bus_generic_read_ivar.9 bus_generic_write_ivar.9 MLINKS+=microtime.9 getmicrotime.9 MLINKS+=microtime.9 nanotime.9 MLINKS+=microtime.9 getnanotime.9 MLINKS+=microuptime.9 getmicrouptime.9 MLINKS+=microuptime.9 nanouptime.9 MLINKS+=microuptime.9 getnanouptime.9 MLINKS+=suser.9 suser_cred.9 MLINKS+=sysctl_add_oid.9 sysctl_remove_oid.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_OID.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_NODE.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_STRING.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_INT.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_UINT.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_LONG.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_ULONG.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_OPAQUE.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_STRUCT.9 MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_PROC.9 MLINKS+=sysctl_ctx_init.9 sysctl_ctx_free.9 MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_add.9 MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_del.9 MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_find.9 MLINKS+=sbuf.9 sbuf_new.9 MLINKS+=sbuf.9 sbuf_clear.9 MLINKS+=sbuf.9 sbuf_setpos.9 MLINKS+=sbuf.9 sbuf_cat.9 MLINKS+=sbuf.9 sbuf_cpy.9 MLINKS+=sbuf.9 sbuf_printf.9 MLINKS+=sbuf.9 sbuf_putc.9 MLINKS+=sbuf.9 sbuf_overflowed.9 MLINKS+=sbuf.9 sbuf_finish.9 MLINKS+=sbuf.9 sbuf_data.9 MLINKS+=sbuf.9 sbuf_len.9 MLINKS+=sbuf.9 sbuf_delete.9 MLINKS+=sbuf.9 sbuf_trim.9 MLINKS+=sbuf.9 sbuf_vprintf.9 MLINKS+=zone.9 uma.9 MLINKS+=zone.9 uma_zalloc.9 MLINKS+=zone.9 uma_zcreate.9 MLINKS+=zone.9 uma_zfree.9 MLINKS+=zone.9 uma_zdestroy.9 .include "bsd.prog.mk" diff --git a/ja_JP.eucJP/man/man9/accept_filter.9 b/ja_JP.eucJP/man/man9/accept_filter.9 new file mode 100644 index 0000000000..1a9e25ef98 --- /dev/null +++ b/ja_JP.eucJP/man/man9/accept_filter.9 @@ -0,0 +1,134 @@ +.\" +.\" Copyright (c) 2000 Alfred Perlstein +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" %FreeBSD: src/share/man/man9/accept_filter.9,v 1.10 2002/12/27 12:15:34 schweikh Exp % +.\" $FreeBSD$ +.\" " +.Dd June 25, 2000 +.Os +.Dt ACCEPT_FILTER 9 +.Sh 名称 +.Nm accept_filter , +.Nm accept_filt_add , +.Nm accept_filt_del , +.Nm accept_filt_generic_mod_event , +.Nm accept_filt_get +.Nd 入力接続フィルタ +.Sh 書式 +.In sys/types.h +.In sys/module.h +.In sys/socket.h +.Fd #define ACCEPT_FILTER_MOD +.In sys/socketvar.h +.Ft int +.Fn accept_filt_add "struct accept_filter *filt" +.Ft int +.Fn accept_filt_del "char *name" +.Ft int +.Fn accept_filt_generic_mod_event "module_t mod" "int event" "void *data" +.Ft struct accept_filter * +.Fn accept_filt_get "char *name" +.Sh 解説 +accept フィルタは、カーネルが入力接続を前処理することを、アプリケーションが +要求することを可能にします。 +accept フィルタは、 +.Dv SO_ACCEPTFILTER +の +.Fa optname +で渡すことで、 +.Xr setsockopt 2 +システムコールを介して要求されます。 +.Sh 実装に関する注 +accept フィルタになりたいモジュールは、システムに accept_filter 構造体を +提供しなければなりません。 +.Bd -literal +struct accept_filter { + char accf_name[16]; + void (*accf_callback)(struct socket *so, void *arg, int waitflag); + void * (*accf_create)(struct socket *so, char *arg); + void (*accf_destroy)(struct socket *so); + SLIST_ENTRY(accept_filter) accf_next; /* リストの次のエントリ */ +}; +.Ed +.Pp +そのモジュールは、 +.Xr MALLOC 9 +で割当てられた accept_filter 構造体へのポインタを渡す関数 +.Fn accept_filt_add +を使用して、それを登録するべきです。 +.Pp +.Fa struct accept_filter +のフィールドは以下の通りです。 +.Bl -tag -width accf_callbackXXX +.It accf_name +フィルタの名前です。 +これはユーザ領域からアクセスされる方法です。 +.It accf_callback +接続が確立されたときにカーネルが実行するコールバックです。 +これは socket upcall と同等で、そのコールバックがソケットのフラグを +変更しない限りは、接続が確立したとき、 +またソケットに新しいデータが届くたびに、呼出されます。 +.It accf_create +監視しているソケット上に +.Xr setsockopt 2 +がフィルタをインストールするたびに呼出されます。 +.It accf_destroy +ユーザがそのソケット上の accept フィルタを取り除くたびに呼出されます。 +.El +.Pp +.Fn accept_filt_add +を使用して登録されたときに accept_filter.accf_name に使用された同じ文字列が +.Fn accept_filt_del +に渡されると、その後カーネルはそれ以上のユーザ領域の +そのフィルタの使用を禁じます。 +.Pp +.Fn accept_filt_get +は +.Fn setsockopt +システムコールを介して使用されるための accept フィルタを +見つけるために内部で使用されます。 +.Pp +.Fn accept_filt_generic_mod_event +は自分自身をロードおよびアンロードするための引数フィールドを使用しない +accept フィルタのために、コードの重複を避ける単純な方法を提供します。 +これは +.Fn DECLARE_MODULE +マクロのためにロード/アンロード構造体に配置されることが可能な関数です。 +.Sh 関連項目 +.Xr setsockopt 2 , +.Xr accf_data 9 , +.Xr accf_http 9 , +.Xr malloc 9 +.Sh 歴史 +accept フィルタ機構は +.Fx 4.0 +で導入されました。 +.Sh 作者 +このマニュアルページは +.An Alfred Perlstein , +Sheldon Hearn および Jeroen Ruigrok van der Werven +が書きました。 +accept フィルタの構想は Yahoo! の David Filo によって開拓され、 +Alfred Perlstein によってローダブルモジュールシステムに改良されました。 diff --git a/ja_JP.eucJP/man/man9/accf_data.9 b/ja_JP.eucJP/man/man9/accf_data.9 new file mode 100644 index 0000000000..2867675409 --- /dev/null +++ b/ja_JP.eucJP/man/man9/accf_data.9 @@ -0,0 +1,77 @@ +.\" +.\" Copyright (c) 2000 Alfred Perlstein +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" %FreeBSD: src/share/man/man9/accf_data.9,v 1.7 2002/12/24 13:41:46 ru Exp % +.\" $FreeBSD$ +.\" " +.Dd November 15, 2000 +.Os +.Dt ACCF_DATA 9 +.Sh 名称 +.Nm accf_data +.Nd データ到着までの間の入力接続バッファ +.Sh 書式 +.Nm options INET +.Nm options ACCEPT_FILTER_DATA +.Nm kldload accf_data +.Sh 解説 +これは入力接続を受け取るために +.Fn accept +が使用されるソケット上に配置されるためのフィルタです。 +.Pp +これは接続上のデータ到着までの間にアプリケーションが +.Fn accept +を介して接続された記述子を受け取ることを防止します。 +.Pp +カーネルの中に INET オプションが既にコンパイルされている場合には、 +.Fa ACCEPT_FILTER_DATA +カーネルオプションは +.Xr kldload 8 +を介して実行時に有効化することができるモジュールもあります。 +.Sh 使用例 +ACCEPT_FILTER_DATA がカーネルコンフィグファイルに含まれているか、 +.Nm +モジュールがロードされていると仮定して、これはソケット +.Fa sok +上のデータ accept フィルタを有効化します。 +.Bd -literal -offset 0i + struct accept_filter_arg afa; + + bzero(&afa, sizeof(afa)); + strcpy(afa.af_name, "dataready"); + setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa)); +.Ed +.Sh 関連項目 +.Xr setsockopt 2 , +.Xr accept_filter 9 , +.Xr accf_http 9 +.Sh 歴史 +accept フィルタ機構および accf_data フィルタは +.Fx 4.0 +で導入されました。 +.Sh 作者 +このマニュアルページおよびこのフィルタは +.An Alfred Perlstein +が書きました。 diff --git a/ja_JP.eucJP/man/man9/accf_http.9 b/ja_JP.eucJP/man/man9/accf_http.9 new file mode 100644 index 0000000000..0256d5fbb2 --- /dev/null +++ b/ja_JP.eucJP/man/man9/accf_http.9 @@ -0,0 +1,94 @@ +.\" +.\" Copyright (c) 2000 Alfred Perlstein +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" %FreeBSD: src/share/man/man9/accf_http.9,v 1.10 2002/12/24 13:41:46 ru Exp % +.\" $FreeBSD$ +.\" " +.Dd November 15, 2000 +.Os +.Dt ACCF_HTTP 9 +.Sh 名称 +.Nm accf_http +.Nd ある完全な HTTP リクエストの到着までの間の入力接続バッファ +.Sh 書式 +.Nm options INET +.Nm options ACCEPT_FILTER_HTTP +.Nm kldload accf_http +.Sh 解説 +これは HTTP 入力接続を受け取るために +.Fn accept +が使用されるソケット上に配置されるためのフィルタです。 +.Pp +これは完全な HTTP/1.0 または HTTP/1.1 の HEAD または GET リクエストが +カーネルによってバッファされるまでの間に、アプリケーションが +.Fn accept +を介して接続された記述子を受け取ることを防止します。 +.Pp +HTTP/1.0 または HTTP/1.1 の HEAD または GET リクエスト以外の何かが +受け取られた場合には、カーネルはアプリケーションが +.Fn accept +を介して接続記述子を受け取ることを可能にします。 +.Pp +.Nm +の効用は、サーバがそのリクエストの初期の文法解析を実行する前に +コンテキストの切り替えを何回か行なう必要が無いようにすることです。 +Apache のようなサーバのフォーク前のアクティブプロセス数を低く抑え、 +.Fn select , +.Fn poll +または +.Fn kevent +のようなインタフェースによって管理されることが必要なファイル記述子の組の +大きさを減少させることによって、 +入力リクエストのために必要な CPU 利用を効果的に減少させます。 +.Pp +カーネルの中に INET オプションが既にコンパイルされている場合には、 +.Nm +カーネルオプションは +.Xr kldload 8 +を介して実行時に有効化することができるモジュールもあります。 +.Sh 使用例 +ACCEPT_FILTER_HTTP がカーネルコンフィグファイルに含まれているか、 +.Nm +モジュールがロードされていると仮定して、これはソケット +.Fa sok +上の http accept フィルタを有効化します。 +.Bd -literal -offset 0i + struct accept_filter_arg afa; + + bzero(&afa, sizeof(afa)); + strcpy(afa.af_name, "httpready"); + setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa)); +.Ed +.Sh 関連項目 +.Xr setsockopt 2 , +.Xr accept_filter 9 +.Sh 歴史 +accept フィルタ機構および accf_http フィルタは +.Fx 4.0 +で導入されました。 +.Sh 作者 +このマニュアルページおよびこのフィルタは +.An Alfred Perlstein +が書きました。