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!amp; の David Filo によって開拓され、 Alfred Perlstein によってローダブルモジュールシステムに改良されました。


ACCEPT_FILTER (9) June 25, 2000

tail head cat sleep
QR code linking to this page


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