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        u8 tcp_ignore_invalid_rst;
  31#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
  32        unsigned int offload_timeout;
  33#endif
  34};
  35
  36enum udp_conntrack {
  37        UDP_CT_UNREPLIED,
  38        UDP_CT_REPLIED,
  39        UDP_CT_MAX
  40};
  41
  42struct nf_udp_net {
  43        unsigned int timeouts[UDP_CT_MAX];
  44#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
  45        unsigned int offload_timeout;
  46#endif
  47};
  48
  49struct nf_icmp_net {
  50        unsigned int timeout;
  51};
  52
  53#ifdef CONFIG_NF_CT_PROTO_DCCP
  54struct nf_dccp_net {
  55        u8 dccp_loose;
  56        unsigned int dccp_timeout[CT_DCCP_MAX + 1];
  57};
  58#endif
  59
  60#ifdef CONFIG_NF_CT_PROTO_SCTP
  61struct nf_sctp_net {
  62        unsigned int timeouts[SCTP_CONNTRACK_MAX];
  63};
  64#endif
  65
  66#ifdef CONFIG_NF_CT_PROTO_GRE
  67enum gre_conntrack {
  68        GRE_CT_UNREPLIED,
  69        GRE_CT_REPLIED,
  70        GRE_CT_MAX
  71};
  72
  73struct nf_gre_net {
  74        struct list_head        keymap_list;
  75        unsigned int            timeouts[GRE_CT_MAX];
  76};
  77#endif
  78
  79struct nf_ip_net {
  80        struct nf_generic_net   generic;
  81        struct nf_tcp_net       tcp;
  82        struct nf_udp_net       udp;
  83        struct nf_icmp_net      icmp;
  84        struct nf_icmp_net      icmpv6;
  85#ifdef CONFIG_NF_CT_PROTO_DCCP
  86        struct nf_dccp_net      dccp;
  87#endif
  88#ifdef CONFIG_NF_CT_PROTO_SCTP
  89        struct nf_sctp_net      sctp;
  90#endif
  91#ifdef CONFIG_NF_CT_PROTO_GRE
  92        struct nf_gre_net       gre;
  93#endif
  94};
  95
  96struct ct_pcpu {
  97        spinlock_t              lock;
  98        struct hlist_nulls_head unconfirmed;
  99        struct hlist_nulls_head dying;
 100};
 101
 102struct netns_ct {
 103#ifdef CONFIG_NF_CONNTRACK_EVENTS
 104        bool ecache_dwork_pending;
 105#endif
 106        u8                      sysctl_log_invalid; /* Log invalid packets */
 107        u8                      sysctl_events;
 108        u8                      sysctl_acct;
 109        u8                      sysctl_auto_assign_helper;
 110        u8                      sysctl_tstamp;
 111        u8                      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_ip_net        nf_ct_proto;
 117#if defined(CONFIG_NF_CONNTRACK_LABELS)
 118        unsigned int            labels_used;
 119#endif
 120};
 121#endif
 122