tail head cat sleep
QR code linking to this page

manページ  — ACCEPT_FILTER

名称

accept_filter, accept_filt_add, accept_filt_del, accept_filt_generic_mod_event, accept_filt_get – 入力接続フィルタ

内容

書式

#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);

解説

accept フィルタは、カーネルが入力接続を前処理することを、アプリケーションが 要求することを可能にします。 accept フィルタは、 SO_ACCEPTFILTERoptname で渡すことで、 setsockopt(2) システムコールを介して要求されます。

実装に関する注

accept フィルタになりたいモジュールは、システムに struct accept_filter 構造体を提供しなければなりません。
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;   /* リストの次のエントリ */
};

そのモジュールは、 malloc(9) で割当てられた struct accept_filter 構造体へのポインタを渡す関数 accept_filt_add() を使用して、それを登録するべきです。

struct accept_filter のフィールドは以下の通りです。
accf_name
  フィルタの名前です。 これはユーザ領域からアクセスされる方法です。
accf_callback
  接続が確立されたときにカーネルが実行するコールバックです。 これは socket upcall と同等で、そのコールバックがソケットのフラグを 変更しない限りは、接続が確立したとき、 またソケットに新しいデータが届くたびに、呼出されます。
accf_create
  監視しているソケット上に setsockopt(2) がフィルタをインストールするたびに呼出されます。
accf_destroy
  ユーザがそのソケット上の accept フィルタを取り除くたびに呼出されます。

accept_filt_add() 関数を使用して登録されたときに accept_filter.accf_name に使用された同じ文字列が accept_filt_del() に渡されると、その後カーネルはそれ以上のユーザ領域の そのフィルタの使用を禁じます。

accept_filt_get() 関数は setsockopt(2) システムコールを介して使用されるための accept フィルタを 見つけるために内部で使用されます。

accept_filt_generic_mod_event() 関数は自分自身をロードおよびアンロードするための引数フィールドを使用 しない accept フィルタのために、コードの重複を避ける単純な方法を提供します。 この関数は DECLARE_MODULE() マクロのために moduledata_t 構造体の中で使用されることが可能です。

関連項目

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

歴史

accept フィルタ機構は FreeBSD 4.0 で導入されました。

作者

このマニュアルページは Alfred Perlstein, Sheldon Hearn および Jeroen Ruigrok van der Werven が書きました。

accept フィルタの構想は Yahoo! の David Filo によって開拓され、 Alfred Perlstein によってローダブルモジュールシステムに改良されました。


ACCEPT_FILTER (9) June 25, 2000

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

Hang in there, people suffering from natural disasters and deadly diseases - we're putting ribbons on our cars as fast as we can
— Artur Bagyants