Files

303 lines
7.8 KiB
C
Raw Permalink Normal View History

/* SPDX-License-Identifier: GPL-2.0 */
2007-12-16 13:29:36 -08:00
/*
* ipv4 in net namespaces
*/
#ifndef __NETNS_IPV4_H__
#define __NETNS_IPV4_H__
2008-01-10 03:27:51 -08:00
#include <linux/uidgid.h>
#include <net/inet_frag.h>
2015-03-04 15:02:44 -08:00
#include <linux/rcupdate.h>
#include <linux/seqlock.h>
2019-03-27 12:40:33 -07:00
#include <linux/siphash.h>
struct ctl_table_header;
struct ipv4_devconf;
2008-01-10 03:27:51 -08:00
struct fib_rules_ops;
2008-01-10 03:28:24 -08:00
struct hlist_head;
struct fib_table;
struct sock;
struct local_ports {
u32 range; /* high << 16 | low */
bool warned;
};
struct ping_group_range {
seqlock_t lock;
kgid_t range[2];
};
struct inet_hashinfo;
struct inet_timewait_death_row {
refcount_t tw_refcount;
/* Padding to avoid false sharing, tw_refcount can be often written */
struct inet_hashinfo *hashinfo ____cacheline_aligned_in_smp;
int sysctl_max_tw_buckets;
};
2017-09-27 11:35:42 +08:00
struct tcp_fastopen_context;
#ifdef CONFIG_IP_ROUTE_MULTIPATH
struct sysctl_fib_multipath_hash_seed {
u32 user_seed;
u32 mp_seed;
};
#endif
2025-04-07 17:45:41 +02:00
struct udp_tunnel_gro {
struct sock __rcu *sk;
struct hlist_head list;
};
2007-12-16 13:29:36 -08:00
struct netns_ipv4 {
/* Cacheline organization can be found documented in
* Documentation/networking/net_cachelines/netns_ipv4_sysctl.rst.
* Please update the document when adding new fields.
*/
/* TX readonly hotpath cache lines */
__cacheline_group_begin(netns_ipv4_read_tx);
u8 sysctl_tcp_early_retrans;
u8 sysctl_tcp_tso_win_divisor;
u8 sysctl_tcp_tso_rtt_log;
u8 sysctl_tcp_autocorking;
int sysctl_tcp_min_snd_mss;
unsigned int sysctl_tcp_notsent_lowat;
int sysctl_tcp_limit_output_bytes;
int sysctl_tcp_min_rtt_wlen;
int sysctl_tcp_wmem[3];
u8 sysctl_ip_fwd_use_pmtu;
__cacheline_group_end(netns_ipv4_read_tx);
/* TXRX readonly hotpath cache lines */
__cacheline_group_begin(netns_ipv4_read_txrx);
u8 sysctl_tcp_shrink_window;
__cacheline_group_end(netns_ipv4_read_txrx);
/* RX readonly hotpath cache line */
__cacheline_group_begin(netns_ipv4_read_rx);
u8 sysctl_tcp_moderate_rcvbuf;
u8 sysctl_ip_early_demux;
u8 sysctl_tcp_early_demux;
u8 sysctl_tcp_l3mdev_accept;
/* 3 bytes hole, try to pack */
int sysctl_tcp_reordering;
int sysctl_tcp_rmem[3];
2025-11-19 08:48:13 +00:00
int sysctl_tcp_rcvbuf_low_rtt;
__cacheline_group_end(netns_ipv4_read_rx);
/* ICMP rate limiter hot cache line. */
__cacheline_group_begin_aligned(icmp);
atomic_t icmp_global_credit;
u32 icmp_global_stamp;
__cacheline_group_end_aligned(icmp);
struct inet_timewait_death_row tcp_death_row;
2022-11-14 13:57:54 -08:00
struct udp_table *udp_table;
2025-04-07 17:45:41 +02:00
#if IS_ENABLED(CONFIG_NET_UDP_TUNNEL)
/* Not in a pernet subsys because need to be available at GRO stage */
struct udp_tunnel_gro udp_tunnel_gro[2];
#endif
2008-01-05 23:08:49 -08:00
#ifdef CONFIG_SYSCTL
struct ctl_table_header *forw_hdr;
struct ctl_table_header *frags_hdr;
struct ctl_table_header *ipv4_hdr;
struct ctl_table_header *route_hdr;
struct ctl_table_header *xfrm4_hdr;
2008-01-05 23:08:49 -08:00
#endif
struct ipv4_devconf *devconf_all;
struct ipv4_devconf *devconf_dflt;
2018-03-22 12:45:32 +03:00
struct ip_ra_chain __rcu *ra_chain;
2018-03-22 12:45:40 +03:00
struct mutex ra_mutex;
2008-01-10 03:27:51 -08:00
#ifdef CONFIG_IP_MULTIPLE_TABLES
struct fib_rules_ops *rules_ops;
2015-03-04 15:02:44 -08:00
struct fib_table __rcu *fib_main;
struct fib_table __rcu *fib_default;
unsigned int fib_rules_require_fldissect;
bool fib_has_custom_rules;
#endif
bool fib_has_custom_local_routes;
bool fib_offload_disabled;
#ifdef CONFIG_IP_ROUTE_CLASSID
atomic_t fib_num_tclassid_users;
2008-01-10 03:27:51 -08:00
#endif
2008-01-10 03:28:24 -08:00
struct hlist_head *fib_table_hash;
struct sock *fibnl;
struct hlist_head *fib_info_hash;
unsigned int fib_info_hash_bits;
unsigned int fib_info_cnt;
struct sock *mc_autojoin_sk;
2015-01-29 15:58:09 -08:00
struct inet_peer_base *peers;
2019-05-24 09:03:39 -07:00
struct fqdir *fqdir;
u8 sysctl_icmp_echo_ignore_all;
u8 sysctl_icmp_echo_enable_probe;
u8 sysctl_icmp_echo_ignore_broadcasts;
u8 sysctl_icmp_ignore_bogus_error_responses;
u8 sysctl_icmp_errors_use_inbound_ifaddr;
2025-10-27 10:22:30 +02:00
u8 sysctl_icmp_errors_extension_mask;
int sysctl_icmp_ratelimit;
int sysctl_icmp_ratemask;
int sysctl_icmp_msgs_per_sec;
int sysctl_icmp_msgs_burst;
2022-01-04 10:59:34 +00:00
u32 ip_rt_min_pmtu;
2022-01-04 10:59:47 +00:00
int ip_rt_mtu_expires;
2022-01-26 07:10:58 +00:00
int ip_rt_min_advmss;
2022-01-04 10:59:34 +00:00
struct local_ports ip_local_ports;
u8 sysctl_tcp_ecn;
2025-09-16 10:24:30 +02:00
u8 sysctl_tcp_ecn_option;
2025-09-16 10:24:31 +02:00
u8 sysctl_tcp_ecn_option_beacon;
u8 sysctl_tcp_ecn_fallback;
2015-05-19 21:04:22 +02:00
u8 sysctl_ip_default_ttl;
u8 sysctl_ip_no_pmtu_disc;
u8 sysctl_ip_fwd_update_priority;
u8 sysctl_ip_nonlocal_bind;
u8 sysctl_ip_autobind_reuse;
2016-02-15 12:11:29 +02:00
/* Shall we try to damage output packets if routing dev changes? */
u8 sysctl_ip_dynaddr;
u32 sysctl_ip_local_port_step_width;
#ifdef CONFIG_NET_L3_MASTER_DEV
u8 sysctl_raw_l3mdev_accept;
#endif
u8 sysctl_udp_early_demux;
2013-01-05 16:10:48 +00:00
u8 sysctl_nexthop_compat_mode;
u8 sysctl_fwmark_reflect;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_fwmark_accept;
u8 sysctl_tcp_mtu_probing;
2019-08-07 19:52:29 -04:00
int sysctl_tcp_mtu_probe_floor;
2015-02-10 09:53:16 +08:00
int sysctl_tcp_base_mss;
int sysctl_tcp_probe_threshold;
u32 sysctl_tcp_probe_interval;
int sysctl_tcp_keepalive_time;
int sysctl_tcp_keepalive_intvl;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_keepalive_probes;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_syn_retries;
u8 sysctl_tcp_synack_retries;
u8 sysctl_tcp_syncookies;
2021-06-12 21:32:14 +09:00
u8 sysctl_tcp_migrate_req;
u8 sysctl_tcp_comp_sack_nr;
u8 sysctl_tcp_backlog_ack_defer;
2023-10-11 13:30:44 -07:00
u8 sysctl_tcp_pingpong_thresh;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_retries1;
u8 sysctl_tcp_retries2;
u8 sysctl_tcp_orphan_retries;
u8 sysctl_tcp_tw_reuse;
unsigned int sysctl_tcp_tw_reuse_delay;
int sysctl_tcp_fin_timeout;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_sack;
u8 sysctl_tcp_window_scaling;
u8 sysctl_tcp_timestamps;
2024-06-03 21:30:54 +00:00
int sysctl_tcp_rto_min_us;
2025-02-07 15:28:30 +00:00
int sysctl_tcp_rto_max_ms;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_recovery;
u8 sysctl_tcp_thin_linear_timeouts;
u8 sysctl_tcp_slow_start_after_idle;
u8 sysctl_tcp_retrans_collapse;
u8 sysctl_tcp_stdurg;
u8 sysctl_tcp_rfc1337;
u8 sysctl_tcp_abort_on_overflow;
u8 sysctl_tcp_fack; /* obsolete */
int sysctl_tcp_max_reordering;
2023-07-17 15:29:17 +00:00
int sysctl_tcp_adv_win_scale; /* obsolete */
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_dsack;
u8 sysctl_tcp_app_win;
u8 sysctl_tcp_frto;
u8 sysctl_tcp_nometrics_save;
u8 sysctl_tcp_no_ssthresh_metrics_save;
u8 sysctl_tcp_workaround_signed_windows;
int sysctl_tcp_challenge_ack_limit;
2021-03-25 11:08:17 -07:00
u8 sysctl_tcp_min_tso_segs;
u8 sysctl_tcp_reflect_tos;
int sysctl_tcp_invalid_ratelimit;
int sysctl_tcp_pacing_ss_ratio;
int sysctl_tcp_pacing_ca_ratio;
2022-09-07 18:10:22 -07:00
unsigned int sysctl_tcp_child_ehash_entries;
2025-11-06 11:52:36 +00:00
int sysctl_tcp_comp_sack_rtt_percent;
2018-05-17 14:47:28 -07:00
unsigned long sysctl_tcp_comp_sack_delay_ns;
2020-04-30 10:35:43 -07:00
unsigned long sysctl_tcp_comp_sack_slack_ns;
2016-12-28 17:52:33 +08:00
int sysctl_max_syn_backlog;
2017-09-27 11:35:40 +08:00
int sysctl_tcp_fastopen;
const struct tcp_congestion_ops __rcu *tcp_congestion_control;
2017-09-27 11:35:42 +08:00
struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
unsigned int sysctl_tcp_fastopen_blackhole_timeout;
atomic_t tfo_active_disable_times;
unsigned long tfo_active_disable_stamp;
u32 tcp_challenge_timestamp;
u32 tcp_challenge_count;
2022-10-26 13:51:11 +00:00
u8 sysctl_tcp_plb_enabled;
u8 sysctl_tcp_plb_idle_rehash_rounds;
u8 sysctl_tcp_plb_rehash_rounds;
u8 sysctl_tcp_plb_suspend_rto_sec;
int sysctl_tcp_plb_cong_thresh;
2018-03-13 21:57:16 -07:00
int sysctl_udp_wmem_min;
int sysctl_udp_rmem_min;
u8 sysctl_fib_notify_on_flag_change;
u8 sysctl_tcp_syn_linear_timeouts;
#ifdef CONFIG_NET_L3_MASTER_DEV
u8 sysctl_udp_l3mdev_accept;
#endif
u8 sysctl_igmp_llm_reports;
int sysctl_igmp_max_memberships;
2016-02-08 23:29:22 +02:00
int sysctl_igmp_max_msf;
2016-02-08 23:29:24 +02:00
int sysctl_igmp_qrv;
struct ping_group_range ping_group_range;
2025-08-29 15:30:53 +00:00
u16 ping_port_rover;
2011-05-13 10:01:00 +00:00
atomic_t dev_addr_genid;
unsigned int sysctl_udp_child_hash_entries;
#ifdef CONFIG_SYSCTL
unsigned long *sysctl_local_reserved_ports;
int sysctl_ip_prot_sock;
#endif
#ifdef CONFIG_IP_MROUTE
2010-04-13 05:03:23 +00:00
#ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
2026-05-02 18:07:47 +00:00
struct mr_table __rcu *mrt;
2010-04-13 05:03:23 +00:00
#else
struct list_head mr_tables;
struct fib_rules_ops *mr_rules_ops;
#endif
struct fib_notifier_ops *ipmr_notifier_ops;
atomic_t ipmr_seq;
struct mutex mfc_mutex;
#endif
#ifdef CONFIG_IP_ROUTE_MULTIPATH
struct sysctl_fib_multipath_hash_seed sysctl_fib_multipath_hash_seed;
u32 sysctl_fib_multipath_hash_fields;
u8 sysctl_fib_multipath_use_neigh;
u8 sysctl_fib_multipath_hash_policy;
#endif
2016-12-03 16:45:06 +01:00
struct fib_notifier_ops *notifier_ops;
unsigned int fib_seq; /* writes protected by rtnl_mutex */
2016-12-03 16:45:06 +01:00
2013-07-30 08:33:53 +08:00
atomic_t rt_genid;
2019-03-27 12:40:33 -07:00
siphash_key_t ip_id_key;
struct hlist_head *inet_addr_lst;
2024-10-08 10:29:05 -07:00
struct delayed_work addr_chk_work;
2007-12-16 13:29:36 -08:00
};
2025-04-07 17:45:41 +02:00
2007-12-16 13:29:36 -08:00
#endif