linux/include/net/netns/conntrack.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __NETNS_CONNTRACK_H
   3#define __NETNS_CONNTRACK_H
   4
   5#include <linux/list.h>
   6#include <linux/list_nulls.h>
   7#include <linux/atomic.h>
   8#include <linux/workqueue.h>
   9#include <linux/netfilter/nf_conntrack_tcp.h>
  10#ifdef CONFIG_NF_CT_PROTO_DCCP
  11#include <linux/netfilter/nf_conntrack_dccp.h>
  12#endif
  13#ifdef CONFIG_NF_CT_PROTO_SCTP
  14#include <linux/netfilter/nf_conntrack_sctp.h>
  15#endif
  16#include <linux/seqlock.h>
  17
  18struct ctl_table_header;
  19struct nf_conntrack_ecache;
  20
  21struct nf_generic_net {
  22        unsigned int timeout;
  23};
  24
  25struct nf_tcp_net {
  26        unsigned int timeouts[TCP_CONNTRACK_TIMEOUT_MAX];
  27        int tcp_loose;
  28        int tcp_be_liberal;
  29        int tcp_max_retrans;
  30};
  31
  32enum udp_conntrack {
  33        UDP_CT_UNREPLIED,
  34        UDP_CT_REPLIED,
  35        UDP_CT_MAX
  36};
  37
  38struct nf_udp_net {
  39        unsigned int timeouts[UDP_CT_MAX];
  40};
  41
  42struct nf_icmp_net {
  43        unsigned int timeout;
  44};
  45
  46#ifdef CONFIG_NF_CT_PROTO_DCCP
  47struct nf_dccp_net {
  48        int dccp_loose;
  49        unsigned int dccp_timeout[CT_DCCP_MAX + 1];
  50};
  51#endif
  52
  53#ifdef CONFIG_NF_CT_PROTO_SCTP
  54struct nf_sctp_net {
  55        unsigned int timeouts[SCTP_CONNTRACK_MAX];
  56};
  57#endif
  58
  59#ifdef CONFIG_NF_CT_PROTO_GRE
  60enum gre_conntrack {
  61        GRE_CT_UNREPLIED,
  62        GRE_CT_REPLIED,
  63        GRE_CT_MAX
  64};
  65
  66struct nf_gre_net {
  67        struct list_head        keymap_list;
  68        unsigned int            timeouts[GRE_CT_MAX];
  69};
  70#endif
  71
  72struct nf_ip_net {
  73        struct nf_generic_net   generic;
  74        struct nf_tcp_net       tcp;
  75        struct nf_udp_net       udp;
  76        struct nf_icmp_net      icmp;
  77        struct nf_icmp_net      icmpv6;
  78#ifdef CONFIG_NF_CT_PROTO_DCCP
  79        struct nf_dccp_net      dccp;
  80#endif
  81#ifdef CONFIG_NF_CT_PROTO_SCTP
  82        struct nf_sctp_net      sctp;
  83#endif
  84#ifdef CONFIG_NF_CT_PROTO_GRE
  85        struct nf_gre_net       gre;
  86#endif
  87};
  88
  89struct ct_pcpu {
  90        spinlock_t              lock;
  91        struct hlist_nulls_head unconfirmed;
  92        struct hlist_nulls_head dying;
  93};
  94
  95struct netns_ct {
  96        atomic_t                count;
  97        unsigned int            expect_count;
  98#ifdef CONFIG_NF_CONNTRACK_EVENTS
  99        struct delayed_work ecache_dwork;
 100        bool ecache_dwork_pending;
 101#endif
 102        bool                    auto_assign_helper_warned;
 103#ifdef CONFIG_SYSCTL
 104        struct ctl_table_header *sysctl_header;
 105#endif
 106        unsigned int            sysctl_log_invalid; /* Log invalid packets */
 107        int                     sysctl_events;
 108        int                     sysctl_acct;
 109        int                     sysctl_auto_assign_helper;
 110        int                     sysctl_tstamp;
 111        int                     sysctl_checksum;
 112
 113        struct ct_pcpu __percpu *pcpu_lists;
 114        struct ip_conntrack_stat __percpu *stat;
 115        struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb;
 116        struct nf_exp_event_notifier __rcu *nf_expect_event_cb;
 117        struct nf_ip_net        nf_ct_proto;
 118#if defined(CONFIG_NF_CONNTRACK_LABELS)
 119        unsigned int            labels_used;
 120#endif
 121};
 122#endif
 123