| ACCEPT_FILTER(9) | Kernel Developer's Manual | ACCEPT_FILTER(9) | 
accept_filter, accept_filt_add,
  accept_filt_del,
  accept_filt_generic_mod_event,
  accept_filt_get —
#define ACCEPT_FILTER_MOD
#include
    <sys/param.h>
  
  #include <sys/kernel.h>
  
  #include <sys/sysctl.h>
  
  #include <sys/signalvar.h>
  
  #include <sys/socketvar.h>
  
  #include
    <netinet/accept_filter.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);
SO_ACCEPTFILTER.
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 accept filters currently provided with NetBSD (accf_data(9) and accf_http(9)) are implemented as pseudo-devices, but an accept filter may use any supported means of initializing and registering itself at system startup or later, including the module framework if supported by the running kernel.
The fields of struct accept_filter are as follows:
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(2) system
  call.
The accept_filt_generic_mod_event()
    function can be used by accept filters which are loadable kernel modules to
    add and delete themselves.
The accept filter concept was pioneered by David Filo at Yahoo! and refined to be a loadable module system by Alfred Perlstein.
| November 12, 2008 | NetBSD 9.4 |