*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> accept_filter (9)              



NAME    [Toc]    [Back]

     accept_filter, accept_filt_add, accept_filt_del,
     accept_filt_generic_mod_event, accept_filt_get -- filter incoming connections

SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <sys/module.h>
     #include <sys/socket.h>
     #define ACCEPT_FILTER_MOD
     #include <sys/socketvar.h>

     accept_filt_add(struct accept_filter *filt);

     accept_filt_del(char *name);

     accept_filt_generic_mod_event(module_t mod, int event, void *data);

     struct accept_filter *
     accept_filt_get(char *name);

DESCRIPTION    [Toc]    [Back]

     Accept filters allow an application to request that the kernel preprocess
 incoming connections.  An accept filter is requested via the
     setsockopt(2) system call, passing in an optname of SO_ACCEPTFILTER.


     A module that wants to be an accept filter must provide a struct
     accept_filter to the system:

     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;   /* next on the list */

     The module should register it with the function accept_filt_add(), passing
 a pointer to a struct accept_filter, allocated with malloc().

     The fields of struct accept_filter are as follows:

     accf_name	       Name of the filter; this is how it will be accessed
		       from userland.

     accf_callback()   The callback that the kernel will do once the connection
 is established.  It is the same as a socket upcall
		       and will be called when the connection is established
		       and whenever new data arrives on the socket, unless the
		       callback modifies the socket's flags.

     accf_create()     Called whenever a setsockopt(2) installs the filter
		       onto a listening socket.

     accf_destroy()    Called whenever the user removes the accept filter on
		       the socket.

     The accept_filt_del() function passed the same string used in
     accept_filter.accf_name during registration with accept_filt_add(), the
     kernel will then disallow and further userland use of the filter.

     The accept_filt_get() function is used internally to locate which accept
     filter to use via the setsockopt() system call.

     The accept_filt_generic_mod_event() function provides a simple way to
     avoid duplication of code for accept filters which don't use the argument
     field to load and unload themselves.  This function can be used in the
     moduledata_t struct for the DECLARE_MODULE(9) macro.

SEE ALSO    [Toc]    [Back]

     setsockopt(2), accf_data(9), accf_http(9), malloc(9)

HISTORY    [Toc]    [Back]

     The accept filter mechanism was introduced in FreeBSD 4.0.

AUTHORS    [Toc]    [Back]

     This manual page was written by Alfred Perlstein, Sheldon Hearn and
     Jeroen Ruigrok van der Werven.

     The accept filter concept was pioneered by David Filo at Yahoo!  and
     refined to be a loadable module system by Alfred Perlstein.

FreeBSD 5.2.1			 June 25, 2000			 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
listen Tru64 Listen for socket connections and limits the backlog of incoming connections
pppoed FreeBSD handle incoming PPP over Ethernet connections
accf_data FreeBSD buffer incoming connections until data arrives
accf_http FreeBSD buffer incoming connections until a certain complete HTTP requests arrive
netstat Linux Print network connections, routing tables, interface statistics, masquerade connections, and multica...
ipfstat FreeBSD reports on packet filter statistics and filter list
addpppin IRIX add a PPP incoming entry.
getallpppinmodem IRIX get all PPP incoming modem entries
getallpppinisdn IRIX get all PPP incoming ISDN entries
tsix_get_uid IRIX get the User ID of incoming data
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service