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        u8 tcp_loose;
  28        u8 tcp_be_liberal;
  29        u8 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        u8 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#ifdef CONFIG_NF_CONNTRACK_EVENTS
  97        bool ecache_dwork_pending;
  98#endif
  99        u8                      sysctl_log_invalid; /* Log invalid packets */
 100        u8                      sysctl_events;
 101        u8                      sysctl_acct;
 102        u8                      sysctl_auto_assign_helper;
 103        u8                      sysctl_tstamp;
 104        u8                      sysctl_checksum;
 105
 106        struct ct_pcpu __percpu *pcpu_lists;
 107        struct ip_conntrack_stat __percpu *stat;
 108        struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb;
 109        struct nf_exp_event_notifier __rcu *nf_expect_event_cb;
 110        struct nf_ip_net        nf_ct_proto;
 111#if defined(CONFIG_NF_CONNTRACK_LABELS)
 112        unsigned int            labels_used;
 113#endif
 114};
 115#endif
 116