Module Name: src
Committed By: plunky
Date: Mon Jun 29 06:22:13 UTC 2009
Modified Files:
src/lib/libc/sys: getsockopt.2
Log Message:
add mention of SO_ACCEPTFILTERS, language largely from FreeBSD manpage
To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/lib/libc/sys/getsockopt.2
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/sys/getsockopt.2
diff -u src/lib/libc/sys/getsockopt.2:1.32 src/lib/libc/sys/getsockopt.2:1.33
--- src/lib/libc/sys/getsockopt.2:1.32 Mon May 18 14:51:55 2009
+++ src/lib/libc/sys/getsockopt.2 Mon Jun 29 06:22:13 2009
@@ -1,4 +1,4 @@
-.\" $NetBSD: getsockopt.2,v 1.32 2009/05/18 14:51:55 wiz Exp $
+.\" $NetBSD: getsockopt.2,v 1.33 2009/06/29 06:22:13 plunky Exp $
.\"
.\" Copyright (c) 1983, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95
.\"
-.Dd December 16, 2007
+.Dd June 28, 2009
.Dt GETSOCKOPT 2
.Os
.Sh NAME
@@ -149,7 +149,7 @@
.Fn getsockopt
and set with
.Fn setsockopt .
-.Bl -column SO_OOBINLINE data -offset indent
+.Bl -column SO_ACCEPTFILTER data -offset indent
.It Dv SO_DEBUG Ta "enables recording of debugging information"
.It Dv SO_REUSEADDR Ta "enables local address reuse"
.It Dv SO_REUSEPORT Ta "enables duplicate address and port bindings"
@@ -165,6 +165,7 @@
.It Dv SO_SNDTIMEO Ta "set timeout value for output"
.It Dv SO_RCVTIMEO Ta "set timeout value for input"
.It Dv SO_TIMESTAMP Ta "enables reception of a timestamp with datagrams"
+.It Dv SO_ACCEPTFILTER Ta "set accept filter on listening socket"
.It Dv SO_TYPE Ta "get the type of the socket (get only)"
.It Dv SO_ERROR Ta "get and clear error on the socket (get only)"
.El
@@ -327,6 +328,45 @@
cmsg_type = SCM_TIMESTAMP
.Ed
.Pp
+.Dv SO_ACCEPTFILTER
+places an
+.Xr accept_filter 9
+on the socket, which will filter incoming connections on a listening
+socket before being presented for
+.Xr accept 2 .
+The
+.Fn setsockopt
+system call will fail if the socket already has a filter set, and
+.Xr listen 2
+must be called on the socket before trying to install a filter.
+The
+.Fa optval
+argument
+should point to a
+.Fa struct accept_filter_arg
+that will select and configure the
+.Xr accept_filter 9 ,
+defined as follows:
+.Bd -literal
+struct accept_filter_arg {
+ char af_name[16];
+ char af_arg[256-16];
+};
+.Ed
+.Lp
+The
+.Fa af_name
+argument should be filled with the name of the accept filter
+that the application wishes to place on the listening socket.
+The optional argument
+.Fa af_arg
+can be passed to the accept filter specified by
+.Fa af_name
+to provide additional configuration options at attach time.
+Passing in an
+.Fa optval
+of NULL will remove the filter.
+.Pp
Finally,
.Dv SO_TYPE
and
@@ -360,6 +400,11 @@
this error may also be returned if
.Fa optlen
is not in a valid part of the process address space.
+.It Bq Er EINVAL
+The socket
+.Fa s
+was not suitable for installing an
+.Xr accept_filter 9 .
.It Bq Er ENOPROTOOPT
The option is unknown at the level indicated.
.It Bq Er ENOTSOCK
@@ -385,7 +430,8 @@
.Xr tcp 4 ,
.Xr tp 4 ,
.Xr unix 4 ,
-.Xr protocols 5
+.Xr protocols 5 ,
+.Xr accept_filter 9
.Sh HISTORY
The
.Fn getsockopt