linux/net/netfilter/nf_conntrack_proto_generic.c
<<
>>
Prefs
   1/* (C) 1999-2001 Paul `Rusty' Russell
   2 * (C) 2002-2004 Netfilter Core Team <coreteam@netfilter.org>
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 */
   8
   9#include <linux/types.h>
  10#include <linux/jiffies.h>
  11#include <linux/timer.h>
  12#include <linux/netfilter.h>
  13#include <net/netfilter/nf_conntrack_l4proto.h>
  14
  15static unsigned int nf_ct_generic_timeout __read_mostly = 600*HZ;
  16
  17static bool generic_pkt_to_tuple(const struct sk_buff *skb,
  18                                 unsigned int dataoff,
  19                                 struct nf_conntrack_tuple *tuple)
  20{
  21        tuple->src.u.all = 0;
  22        tuple->dst.u.all = 0;
  23
  24        return true;
  25}
  26
  27static bool generic_invert_tuple(struct nf_conntrack_tuple *tuple,
  28                                 const struct nf_conntrack_tuple *orig)
  29{
  30        tuple->src.u.all = 0;
  31        tuple->dst.u.all = 0;
  32
  33        return true;
  34}
  35
  36/* Print out the per-protocol part of the tuple. */
  37static int generic_print_tuple(struct seq_file *s,
  38                               const struct nf_conntrack_tuple *tuple)
  39{
  40        return 0;
  41}
  42
  43/* Returns verdict for packet, or -1 for invalid. */
  44static int packet(struct nf_conn *ct,
  45                  const struct sk_buff *skb,
  46                  unsigned int dataoff,
  47                  enum ip_conntrack_info ctinfo,
  48                  u_int8_t pf,
  49                  unsigned int hooknum)
  50{
  51        nf_ct_refresh_acct(ct, ctinfo, skb, nf_ct_generic_timeout);
  52        return NF_ACCEPT;
  53}
  54
  55/* Called when a new connection for this protocol found. */
  56static bool new(struct nf_conn *ct, const struct sk_buff *skb,
  57                unsigned int dataoff)
  58{
  59        return true;
  60}
  61
  62#ifdef CONFIG_SYSCTL
  63static struct ctl_table_header *generic_sysctl_header;
  64static struct ctl_table generic_sysctl_table[] = {
  65        {
  66                .procname       = "nf_conntrack_generic_timeout",
  67                .data           = &nf_ct_generic_timeout,
  68                .maxlen         = sizeof(unsigned int),
  69                .mode           = 0644,
  70                .proc_handler   = proc_dointvec_jiffies,
  71        },
  72        {
  73                .ctl_name       = 0
  74        }
  75};
  76#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
  77static struct ctl_table generic_compat_sysctl_table[] = {
  78        {
  79                .procname       = "ip_conntrack_generic_timeout",
  80                .data           = &nf_ct_generic_timeout,
  81                .maxlen         = sizeof(unsigned int),
  82                .mode           = 0644,
  83                .proc_handler   = proc_dointvec_jiffies,
  84        },
  85        {
  86                .ctl_name       = 0
  87        }
  88};
  89#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
  90#endif /* CONFIG_SYSCTL */
  91
  92struct nf_conntrack_l4proto nf_conntrack_l4proto_generic __read_mostly =
  93{
  94        .l3proto                = PF_UNSPEC,
  95        .l4proto                = 255,
  96        .name                   = "unknown",
  97        .pkt_to_tuple           = generic_pkt_to_tuple,
  98        .invert_tuple           = generic_invert_tuple,
  99        .print_tuple            = generic_print_tuple,
 100        .packet                 = packet,
 101        .new                    = new,
 102#ifdef CONFIG_SYSCTL
 103        .ctl_table_header       = &generic_sysctl_header,
 104        .ctl_table              = generic_sysctl_table,
 105#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
 106        .ctl_compat_table       = generic_compat_sysctl_table,
 107#endif
 108#endif
 109};
 110