162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __NETNS_CONNTRACK_H 362306a36Sopenharmony_ci#define __NETNS_CONNTRACK_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/list.h> 662306a36Sopenharmony_ci#include <linux/list_nulls.h> 762306a36Sopenharmony_ci#include <linux/atomic.h> 862306a36Sopenharmony_ci#include <linux/workqueue.h> 962306a36Sopenharmony_ci#include <linux/netfilter/nf_conntrack_tcp.h> 1062306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_DCCP 1162306a36Sopenharmony_ci#include <linux/netfilter/nf_conntrack_dccp.h> 1262306a36Sopenharmony_ci#endif 1362306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_SCTP 1462306a36Sopenharmony_ci#include <linux/netfilter/nf_conntrack_sctp.h> 1562306a36Sopenharmony_ci#endif 1662306a36Sopenharmony_ci#include <linux/seqlock.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct ctl_table_header; 1962306a36Sopenharmony_cistruct nf_conntrack_ecache; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct nf_generic_net { 2262306a36Sopenharmony_ci unsigned int timeout; 2362306a36Sopenharmony_ci}; 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistruct nf_tcp_net { 2662306a36Sopenharmony_ci unsigned int timeouts[TCP_CONNTRACK_TIMEOUT_MAX]; 2762306a36Sopenharmony_ci u8 tcp_loose; 2862306a36Sopenharmony_ci u8 tcp_be_liberal; 2962306a36Sopenharmony_ci u8 tcp_max_retrans; 3062306a36Sopenharmony_ci u8 tcp_ignore_invalid_rst; 3162306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_NF_FLOW_TABLE) 3262306a36Sopenharmony_ci unsigned int offload_timeout; 3362306a36Sopenharmony_ci#endif 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cienum udp_conntrack { 3762306a36Sopenharmony_ci UDP_CT_UNREPLIED, 3862306a36Sopenharmony_ci UDP_CT_REPLIED, 3962306a36Sopenharmony_ci UDP_CT_MAX 4062306a36Sopenharmony_ci}; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistruct nf_udp_net { 4362306a36Sopenharmony_ci unsigned int timeouts[UDP_CT_MAX]; 4462306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_NF_FLOW_TABLE) 4562306a36Sopenharmony_ci unsigned int offload_timeout; 4662306a36Sopenharmony_ci#endif 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct nf_icmp_net { 5062306a36Sopenharmony_ci unsigned int timeout; 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_DCCP 5462306a36Sopenharmony_cistruct nf_dccp_net { 5562306a36Sopenharmony_ci u8 dccp_loose; 5662306a36Sopenharmony_ci unsigned int dccp_timeout[CT_DCCP_MAX + 1]; 5762306a36Sopenharmony_ci}; 5862306a36Sopenharmony_ci#endif 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_SCTP 6162306a36Sopenharmony_cistruct nf_sctp_net { 6262306a36Sopenharmony_ci unsigned int timeouts[SCTP_CONNTRACK_MAX]; 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci#endif 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_GRE 6762306a36Sopenharmony_cienum gre_conntrack { 6862306a36Sopenharmony_ci GRE_CT_UNREPLIED, 6962306a36Sopenharmony_ci GRE_CT_REPLIED, 7062306a36Sopenharmony_ci GRE_CT_MAX 7162306a36Sopenharmony_ci}; 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cistruct nf_gre_net { 7462306a36Sopenharmony_ci struct list_head keymap_list; 7562306a36Sopenharmony_ci unsigned int timeouts[GRE_CT_MAX]; 7662306a36Sopenharmony_ci}; 7762306a36Sopenharmony_ci#endif 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_cistruct nf_ip_net { 8062306a36Sopenharmony_ci struct nf_generic_net generic; 8162306a36Sopenharmony_ci struct nf_tcp_net tcp; 8262306a36Sopenharmony_ci struct nf_udp_net udp; 8362306a36Sopenharmony_ci struct nf_icmp_net icmp; 8462306a36Sopenharmony_ci struct nf_icmp_net icmpv6; 8562306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_DCCP 8662306a36Sopenharmony_ci struct nf_dccp_net dccp; 8762306a36Sopenharmony_ci#endif 8862306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_SCTP 8962306a36Sopenharmony_ci struct nf_sctp_net sctp; 9062306a36Sopenharmony_ci#endif 9162306a36Sopenharmony_ci#ifdef CONFIG_NF_CT_PROTO_GRE 9262306a36Sopenharmony_ci struct nf_gre_net gre; 9362306a36Sopenharmony_ci#endif 9462306a36Sopenharmony_ci}; 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_cistruct netns_ct { 9762306a36Sopenharmony_ci#ifdef CONFIG_NF_CONNTRACK_EVENTS 9862306a36Sopenharmony_ci bool ecache_dwork_pending; 9962306a36Sopenharmony_ci#endif 10062306a36Sopenharmony_ci u8 sysctl_log_invalid; /* Log invalid packets */ 10162306a36Sopenharmony_ci u8 sysctl_events; 10262306a36Sopenharmony_ci u8 sysctl_acct; 10362306a36Sopenharmony_ci u8 sysctl_tstamp; 10462306a36Sopenharmony_ci u8 sysctl_checksum; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci struct ip_conntrack_stat __percpu *stat; 10762306a36Sopenharmony_ci struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; 10862306a36Sopenharmony_ci struct nf_ip_net nf_ct_proto; 10962306a36Sopenharmony_ci#if defined(CONFIG_NF_CONNTRACK_LABELS) 11062306a36Sopenharmony_ci unsigned int labels_used; 11162306a36Sopenharmony_ci#endif 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci#endif 114