accept_filter(9)

NAME

accept_filter, accept_filt_add, accept_filt_del, accept_filt_generic_mod_event, accept_filt_get - filter in
coming connections

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 ker
nel pre-process incoming connections. An accept filter is requested
via the
setsockopt(2) system call, passing in an optname of SO_AC
CEPTFILTER.

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 mal
loc(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 connec
tion is established. It is the same as a
socket
upcall and will be called when the con
nection 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 ac
cept 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(2) system call.
The accept_filt_generic_mod_event() function provides a sim
ple way to
avoid duplication of code for accept filters which do not
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

setsockopt(2), accf_data(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 Ya
hoo! and
refined to be a loadable module system by Alfred Perlstein.
BSD June 25, 2000
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout