linux/include/net/netns/ipv4.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * ipv4 in net namespaces
   4 */
   5
   6#ifndef __NETNS_IPV4_H__
   7#define __NETNS_IPV4_H__
   8
   9#include <linux/uidgid.h>
  10#include <net/inet_frag.h>
  11#include <linux/rcupdate.h>
  12#include <linux/siphash.h>
  13
  14struct tcpm_hash_bucket;
  15struct ctl_table_header;
  16struct ipv4_devconf;
  17struct fib_rules_ops;
  18struct hlist_head;
  19struct fib_table;
  20struct sock;
  21struct local_ports {
  22        seqlock_t       lock;
  23        int             range[2];
  24        bool            warned;
  25};
  26
  27struct ping_group_range {
  28        seqlock_t       lock;
  29        kgid_t          range[2];
  30};
  31
  32struct inet_hashinfo;
  33
  34struct inet_timewait_death_row {
  35        atomic_t                tw_count;
  36
  37        struct inet_hashinfo    *hashinfo ____cacheline_aligned_in_smp;
  38        int                     sysctl_max_tw_buckets;
  39};
  40
  41struct tcp_fastopen_context;
  42
  43struct netns_ipv4 {
  44#ifdef CONFIG_SYSCTL
  45        struct ctl_table_header *forw_hdr;
  46        struct ctl_table_header *frags_hdr;
  47        struct ctl_table_header *ipv4_hdr;
  48        struct ctl_table_header *route_hdr;
  49        struct ctl_table_header *xfrm4_hdr;
  50#endif
  51        struct ipv4_devconf     *devconf_all;
  52        struct ipv4_devconf     *devconf_dflt;
  53        struct ip_ra_chain __rcu *ra_chain;
  54        struct mutex            ra_mutex;
  55#ifdef CONFIG_IP_MULTIPLE_TABLES
  56        struct fib_rules_ops    *rules_ops;
  57        bool                    fib_has_custom_rules;
  58        unsigned int            fib_rules_require_fldissect;
  59        struct fib_table __rcu  *fib_main;
  60        struct fib_table __rcu  *fib_default;
  61#endif
  62        bool                    fib_has_custom_local_routes;
  63#ifdef CONFIG_IP_ROUTE_CLASSID
  64        int                     fib_num_tclassid_users;
  65#endif
  66        struct hlist_head       *fib_table_hash;
  67        bool                    fib_offload_disabled;
  68        struct sock             *fibnl;
  69
  70        struct sock  * __percpu *icmp_sk;
  71        struct sock             *mc_autojoin_sk;
  72
  73        struct inet_peer_base   *peers;
  74        struct sock  * __percpu *tcp_sk;
  75        struct fqdir            *fqdir;
  76#ifdef CONFIG_NETFILTER
  77        struct xt_table         *iptable_filter;
  78        struct xt_table         *iptable_mangle;
  79        struct xt_table         *iptable_raw;
  80        struct xt_table         *arptable_filter;
  81#ifdef CONFIG_SECURITY
  82        struct xt_table         *iptable_security;
  83#endif
  84        struct xt_table         *nat_table;
  85#endif
  86
  87        int sysctl_icmp_echo_ignore_all;
  88        int sysctl_icmp_echo_ignore_broadcasts;
  89        int sysctl_icmp_ignore_bogus_error_responses;
  90        int sysctl_icmp_ratelimit;
  91        int sysctl_icmp_ratemask;
  92        int sysctl_icmp_errors_use_inbound_ifaddr;
  93
  94        struct local_ports ip_local_ports;
  95
  96        int sysctl_tcp_ecn;
  97        int sysctl_tcp_ecn_fallback;
  98
  99        int sysctl_ip_default_ttl;
 100        int sysctl_ip_no_pmtu_disc;
 101        int sysctl_ip_fwd_use_pmtu;
 102        int sysctl_ip_fwd_update_priority;
 103        int sysctl_ip_nonlocal_bind;
 104        /* Shall we try to damage output packets if routing dev changes? */
 105        int sysctl_ip_dynaddr;
 106        int sysctl_ip_early_demux;
 107#ifdef CONFIG_NET_L3_MASTER_DEV
 108        int sysctl_raw_l3mdev_accept;
 109#endif
 110        int sysctl_tcp_early_demux;
 111        int sysctl_udp_early_demux;
 112
 113        int sysctl_fwmark_reflect;
 114        int sysctl_tcp_fwmark_accept;
 115#ifdef CONFIG_NET_L3_MASTER_DEV
 116        int sysctl_tcp_l3mdev_accept;
 117#endif
 118        int sysctl_tcp_mtu_probing;
 119        int sysctl_tcp_base_mss;
 120        int sysctl_tcp_min_snd_mss;
 121        int sysctl_tcp_probe_threshold;
 122        u32 sysctl_tcp_probe_interval;
 123
 124        int sysctl_tcp_keepalive_time;
 125        int sysctl_tcp_keepalive_probes;
 126        int sysctl_tcp_keepalive_intvl;
 127
 128        int sysctl_tcp_syn_retries;
 129        int sysctl_tcp_synack_retries;
 130        int sysctl_tcp_syncookies;
 131        int sysctl_tcp_reordering;
 132        int sysctl_tcp_retries1;
 133        int sysctl_tcp_retries2;
 134        int sysctl_tcp_orphan_retries;
 135        int sysctl_tcp_fin_timeout;
 136        unsigned int sysctl_tcp_notsent_lowat;
 137        int sysctl_tcp_tw_reuse;
 138        int sysctl_tcp_sack;
 139        int sysctl_tcp_window_scaling;
 140        int sysctl_tcp_timestamps;
 141        int sysctl_tcp_early_retrans;
 142        int sysctl_tcp_recovery;
 143        int sysctl_tcp_thin_linear_timeouts;
 144        int sysctl_tcp_slow_start_after_idle;
 145        int sysctl_tcp_retrans_collapse;
 146        int sysctl_tcp_stdurg;
 147        int sysctl_tcp_rfc1337;
 148        int sysctl_tcp_abort_on_overflow;
 149        int sysctl_tcp_fack;
 150        int sysctl_tcp_max_reordering;
 151        int sysctl_tcp_dsack;
 152        int sysctl_tcp_app_win;
 153        int sysctl_tcp_adv_win_scale;
 154        int sysctl_tcp_frto;
 155        int sysctl_tcp_nometrics_save;
 156        int sysctl_tcp_moderate_rcvbuf;
 157        int sysctl_tcp_tso_win_divisor;
 158        int sysctl_tcp_workaround_signed_windows;
 159        int sysctl_tcp_limit_output_bytes;
 160        int sysctl_tcp_challenge_ack_limit;
 161        int sysctl_tcp_min_tso_segs;
 162        int sysctl_tcp_min_rtt_wlen;
 163        int sysctl_tcp_autocorking;
 164        int sysctl_tcp_invalid_ratelimit;
 165        int sysctl_tcp_pacing_ss_ratio;
 166        int sysctl_tcp_pacing_ca_ratio;
 167        int sysctl_tcp_wmem[3];
 168        int sysctl_tcp_rmem[3];
 169        int sysctl_tcp_comp_sack_nr;
 170        unsigned long sysctl_tcp_comp_sack_delay_ns;
 171        struct inet_timewait_death_row tcp_death_row;
 172        int sysctl_max_syn_backlog;
 173        int sysctl_tcp_fastopen;
 174        const struct tcp_congestion_ops __rcu  *tcp_congestion_control;
 175        struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
 176        spinlock_t tcp_fastopen_ctx_lock;
 177        unsigned int sysctl_tcp_fastopen_blackhole_timeout;
 178        atomic_t tfo_active_disable_times;
 179        unsigned long tfo_active_disable_stamp;
 180
 181        int sysctl_udp_wmem_min;
 182        int sysctl_udp_rmem_min;
 183
 184#ifdef CONFIG_NET_L3_MASTER_DEV
 185        int sysctl_udp_l3mdev_accept;
 186#endif
 187
 188        int sysctl_igmp_max_memberships;
 189        int sysctl_igmp_max_msf;
 190        int sysctl_igmp_llm_reports;
 191        int sysctl_igmp_qrv;
 192
 193        struct ping_group_range ping_group_range;
 194
 195        atomic_t dev_addr_genid;
 196
 197#ifdef CONFIG_SYSCTL
 198        unsigned long *sysctl_local_reserved_ports;
 199        int sysctl_ip_prot_sock;
 200#endif
 201
 202#ifdef CONFIG_IP_MROUTE
 203#ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
 204        struct mr_table         *mrt;
 205#else
 206        struct list_head        mr_tables;
 207        struct fib_rules_ops    *mr_rules_ops;
 208#endif
 209#endif
 210#ifdef CONFIG_IP_ROUTE_MULTIPATH
 211        int sysctl_fib_multipath_use_neigh;
 212        int sysctl_fib_multipath_hash_policy;
 213#endif
 214
 215        struct fib_notifier_ops *notifier_ops;
 216        unsigned int    fib_seq;        /* protected by rtnl_mutex */
 217
 218        struct fib_notifier_ops *ipmr_notifier_ops;
 219        unsigned int    ipmr_seq;       /* protected by rtnl_mutex */
 220
 221        atomic_t        rt_genid;
 222        siphash_key_t   ip_id_key;
 223};
 224#endif
 225