1 .\"
2 .\" This file and its contents are supplied under the terms of the
3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
4 .\" You may only use this file in accordance with the terms of version
5 .\" 1.0 of the CDDL.
6 .\"
7 .\" A full copy of the text of the CDDL should have accompanied this
8 .\" source. A copy of the CDDL is also available via the Internet at
9 .\" http://www.illumos.org/license/CDDL.
10 .\"
11 .\"
12 .\" Copyright 2014 Ryan Zezeski
13 .\"
14 .Dd Nov 20, 2014
15 .Dt DATAFILT 7M
16 .Os
17 .Sh NAME
18 .Nm datafilt
19 .Nd socket filter module for deferred TCP connections
20 .Sh DESCRIPTION
21 The
22 .Nm datafilt
23 socket filter provides deferment of
24 .Xr accept 3SOCKET
25 for TCP connections. The accept call will not return until at least
26 one byte has been buffered by the kernel. Deferment assures the
27 application that the first call to
28 .Xr read 2 or
29 .Xr recv 3SOCKET
30 will not block. It reduces unnecessary switching between user and
31 kernel.
32 .Sh EXAMPLES
33 .Ss Example 1
34 Enable deferment on the listening socket.
35 .Bd -literal
36 setsockopt(lsock, SOL_FILTER, FIL_ATTACH, "datafilt", 8);
37 .Ed
38 .Ss Example 2
39 Disable deferment on the listening socket.
40 .Bd -literal
41 char filt[] = "datafilt";
42 setsockopt(lsock, SOL_FILTER, FIL_DETACH, filt, strlen(filt) + 1);
43 .Ed
44 .Sh SEE ALSO
45 .Xr setsockopt 3SOCKET ,
46 .Xr httpfilt 7M