linux/include/net/netfilter/nf_conntrack_helper.h
<<
>>
Prefs
   1/*
   2 * connection tracking helpers.
   3 *
   4 * 16 Dec 2003: Yasuyuki Kozakai @USAGI <yasuyuki.kozakai@toshiba.co.jp>
   5 *      - generalize L3 protocol dependent part.
   6 *
   7 * Derived from include/linux/netfiter_ipv4/ip_conntrack_helper.h
   8 */
   9
  10#ifndef _NF_CONNTRACK_HELPER_H
  11#define _NF_CONNTRACK_HELPER_H
  12#include <net/netfilter/nf_conntrack.h>
  13#include <net/netfilter/nf_conntrack_extend.h>
  14
  15struct module;
  16
  17struct nf_conntrack_helper
  18{
  19        struct hlist_node hnode;        /* Internal use. */
  20
  21        const char *name;               /* name of the module */
  22        struct module *me;              /* pointer to self */
  23        unsigned int max_expected;      /* Maximum number of concurrent 
  24                                         * expected connections */
  25        unsigned int timeout;           /* timeout for expecteds */
  26
  27        /* Tuple of things we will help (compared against server response) */
  28        struct nf_conntrack_tuple tuple;
  29
  30        /* Function to call when data passes; return verdict, or -1 to
  31           invalidate. */
  32        int (*help)(struct sk_buff *skb,
  33                    unsigned int protoff,
  34                    struct nf_conn *ct,
  35                    enum ip_conntrack_info conntrackinfo);
  36
  37        void (*destroy)(struct nf_conn *ct);
  38
  39        int (*to_nlattr)(struct sk_buff *skb, const struct nf_conn *ct);
  40};
  41
  42extern struct nf_conntrack_helper *
  43__nf_ct_helper_find(const struct nf_conntrack_tuple *tuple);
  44
  45extern struct nf_conntrack_helper *
  46nf_ct_helper_find_get( const struct nf_conntrack_tuple *tuple);
  47
  48extern struct nf_conntrack_helper *
  49__nf_conntrack_helper_find_byname(const char *name);
  50
  51extern void nf_ct_helper_put(struct nf_conntrack_helper *helper);
  52extern int nf_conntrack_helper_register(struct nf_conntrack_helper *);
  53extern void nf_conntrack_helper_unregister(struct nf_conntrack_helper *);
  54
  55extern struct nf_conn_help *nf_ct_helper_ext_add(struct nf_conn *ct, gfp_t gfp);
  56
  57static inline struct nf_conn_help *nfct_help(const struct nf_conn *ct)
  58{
  59        return nf_ct_ext_find(ct, NF_CT_EXT_HELPER);
  60}
  61#endif /*_NF_CONNTRACK_HELPER_H*/
  62