Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ACCEPT_FILTER(9)	   Kernel Developer's Manual	      ACCEPT_FILTER(9)

NAME
       accept_filter,		  accept_filt_add,	      accept_filt_del,
       accept_filt_generic_mod_event, accept_filt_get -- filter	incoming  con-
       nections

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

       int
       accept_filt_add(struct accept_filter *filt);

       int
       accept_filt_del(char *name);

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

       struct accept_filter *
       accept_filt_get(char *name);

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

IMPLEMENTATION NOTES
       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(9).

       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  ac-
       cept filter to use via the setsockopt(2)	system call.

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

SEE ALSO
       setsockopt(2), accf_data(9), accf_dns(9), accf_http(9), malloc(9)

HISTORY
       The accept filter mechanism was introduced in FreeBSD 4.0.

AUTHORS
       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 re-
       fined to	be a loadable module system by Alfred Perlstein.

FreeBSD	13.2			 June 25, 2000		      ACCEPT_FILTER(9)

NAME | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=accept_filter&sektion=9&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help