Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * ipv4 in net namespaces
0004  */
0005 
0006 #ifndef __NETNS_IPV4_H__
0007 #define __NETNS_IPV4_H__
0008 
0009 #include <linux/uidgid.h>
0010 #include <net/inet_frag.h>
0011 #include <linux/rcupdate.h>
0012 #include <linux/seqlock.h>
0013 #include <linux/siphash.h>
0014 
0015 struct ctl_table_header;
0016 struct ipv4_devconf;
0017 struct fib_rules_ops;
0018 struct hlist_head;
0019 struct fib_table;
0020 struct sock;
0021 struct local_ports {
0022     seqlock_t   lock;
0023     int     range[2];
0024     bool        warned;
0025 };
0026 
0027 struct ping_group_range {
0028     seqlock_t   lock;
0029     kgid_t      range[2];
0030 };
0031 
0032 struct inet_hashinfo;
0033 
0034 struct inet_timewait_death_row {
0035     refcount_t      tw_refcount;
0036 
0037     struct inet_hashinfo    *hashinfo ____cacheline_aligned_in_smp;
0038     int         sysctl_max_tw_buckets;
0039 };
0040 
0041 struct tcp_fastopen_context;
0042 
0043 struct netns_ipv4 {
0044     struct inet_timewait_death_row *tcp_death_row;
0045 
0046 #ifdef CONFIG_SYSCTL
0047     struct ctl_table_header *forw_hdr;
0048     struct ctl_table_header *frags_hdr;
0049     struct ctl_table_header *ipv4_hdr;
0050     struct ctl_table_header *route_hdr;
0051     struct ctl_table_header *xfrm4_hdr;
0052 #endif
0053     struct ipv4_devconf *devconf_all;
0054     struct ipv4_devconf *devconf_dflt;
0055     struct ip_ra_chain __rcu *ra_chain;
0056     struct mutex        ra_mutex;
0057 #ifdef CONFIG_IP_MULTIPLE_TABLES
0058     struct fib_rules_ops    *rules_ops;
0059     struct fib_table __rcu  *fib_main;
0060     struct fib_table __rcu  *fib_default;
0061     unsigned int        fib_rules_require_fldissect;
0062     bool            fib_has_custom_rules;
0063 #endif
0064     bool            fib_has_custom_local_routes;
0065     bool            fib_offload_disabled;
0066 #ifdef CONFIG_IP_ROUTE_CLASSID
0067     atomic_t        fib_num_tclassid_users;
0068 #endif
0069     struct hlist_head   *fib_table_hash;
0070     struct sock     *fibnl;
0071 
0072     struct sock     *mc_autojoin_sk;
0073 
0074     struct inet_peer_base   *peers;
0075     struct fqdir        *fqdir;
0076 
0077     u8 sysctl_icmp_echo_ignore_all;
0078     u8 sysctl_icmp_echo_enable_probe;
0079     u8 sysctl_icmp_echo_ignore_broadcasts;
0080     u8 sysctl_icmp_ignore_bogus_error_responses;
0081     u8 sysctl_icmp_errors_use_inbound_ifaddr;
0082     int sysctl_icmp_ratelimit;
0083     int sysctl_icmp_ratemask;
0084 
0085     u32 ip_rt_min_pmtu;
0086     int ip_rt_mtu_expires;
0087     int ip_rt_min_advmss;
0088 
0089     struct local_ports ip_local_ports;
0090 
0091     u8 sysctl_tcp_ecn;
0092     u8 sysctl_tcp_ecn_fallback;
0093 
0094     u8 sysctl_ip_default_ttl;
0095     u8 sysctl_ip_no_pmtu_disc;
0096     u8 sysctl_ip_fwd_use_pmtu;
0097     u8 sysctl_ip_fwd_update_priority;
0098     u8 sysctl_ip_nonlocal_bind;
0099     u8 sysctl_ip_autobind_reuse;
0100     /* Shall we try to damage output packets if routing dev changes? */
0101     u8 sysctl_ip_dynaddr;
0102     u8 sysctl_ip_early_demux;
0103 #ifdef CONFIG_NET_L3_MASTER_DEV
0104     u8 sysctl_raw_l3mdev_accept;
0105 #endif
0106     u8 sysctl_tcp_early_demux;
0107     u8 sysctl_udp_early_demux;
0108 
0109     u8 sysctl_nexthop_compat_mode;
0110 
0111     u8 sysctl_fwmark_reflect;
0112     u8 sysctl_tcp_fwmark_accept;
0113 #ifdef CONFIG_NET_L3_MASTER_DEV
0114     u8 sysctl_tcp_l3mdev_accept;
0115 #endif
0116     u8 sysctl_tcp_mtu_probing;
0117     int sysctl_tcp_mtu_probe_floor;
0118     int sysctl_tcp_base_mss;
0119     int sysctl_tcp_min_snd_mss;
0120     int sysctl_tcp_probe_threshold;
0121     u32 sysctl_tcp_probe_interval;
0122 
0123     int sysctl_tcp_keepalive_time;
0124     int sysctl_tcp_keepalive_intvl;
0125     u8 sysctl_tcp_keepalive_probes;
0126 
0127     u8 sysctl_tcp_syn_retries;
0128     u8 sysctl_tcp_synack_retries;
0129     u8 sysctl_tcp_syncookies;
0130     u8 sysctl_tcp_migrate_req;
0131     u8 sysctl_tcp_comp_sack_nr;
0132     int sysctl_tcp_reordering;
0133     u8 sysctl_tcp_retries1;
0134     u8 sysctl_tcp_retries2;
0135     u8 sysctl_tcp_orphan_retries;
0136     u8 sysctl_tcp_tw_reuse;
0137     int sysctl_tcp_fin_timeout;
0138     unsigned int sysctl_tcp_notsent_lowat;
0139     u8 sysctl_tcp_sack;
0140     u8 sysctl_tcp_window_scaling;
0141     u8 sysctl_tcp_timestamps;
0142     u8 sysctl_tcp_early_retrans;
0143     u8 sysctl_tcp_recovery;
0144     u8 sysctl_tcp_thin_linear_timeouts;
0145     u8 sysctl_tcp_slow_start_after_idle;
0146     u8 sysctl_tcp_retrans_collapse;
0147     u8 sysctl_tcp_stdurg;
0148     u8 sysctl_tcp_rfc1337;
0149     u8 sysctl_tcp_abort_on_overflow;
0150     u8 sysctl_tcp_fack; /* obsolete */
0151     int sysctl_tcp_max_reordering;
0152     int sysctl_tcp_adv_win_scale;
0153     u8 sysctl_tcp_dsack;
0154     u8 sysctl_tcp_app_win;
0155     u8 sysctl_tcp_frto;
0156     u8 sysctl_tcp_nometrics_save;
0157     u8 sysctl_tcp_no_ssthresh_metrics_save;
0158     u8 sysctl_tcp_moderate_rcvbuf;
0159     u8 sysctl_tcp_tso_win_divisor;
0160     u8 sysctl_tcp_workaround_signed_windows;
0161     int sysctl_tcp_limit_output_bytes;
0162     int sysctl_tcp_challenge_ack_limit;
0163     int sysctl_tcp_min_rtt_wlen;
0164     u8 sysctl_tcp_min_tso_segs;
0165     u8 sysctl_tcp_tso_rtt_log;
0166     u8 sysctl_tcp_autocorking;
0167     u8 sysctl_tcp_reflect_tos;
0168     int sysctl_tcp_invalid_ratelimit;
0169     int sysctl_tcp_pacing_ss_ratio;
0170     int sysctl_tcp_pacing_ca_ratio;
0171     int sysctl_tcp_wmem[3];
0172     int sysctl_tcp_rmem[3];
0173     unsigned long sysctl_tcp_comp_sack_delay_ns;
0174     unsigned long sysctl_tcp_comp_sack_slack_ns;
0175     int sysctl_max_syn_backlog;
0176     int sysctl_tcp_fastopen;
0177     const struct tcp_congestion_ops __rcu  *tcp_congestion_control;
0178     struct tcp_fastopen_context __rcu *tcp_fastopen_ctx;
0179     unsigned int sysctl_tcp_fastopen_blackhole_timeout;
0180     atomic_t tfo_active_disable_times;
0181     unsigned long tfo_active_disable_stamp;
0182     u32 tcp_challenge_timestamp;
0183     u32 tcp_challenge_count;
0184 
0185     int sysctl_udp_wmem_min;
0186     int sysctl_udp_rmem_min;
0187 
0188     u8 sysctl_fib_notify_on_flag_change;
0189 
0190 #ifdef CONFIG_NET_L3_MASTER_DEV
0191     u8 sysctl_udp_l3mdev_accept;
0192 #endif
0193 
0194     u8 sysctl_igmp_llm_reports;
0195     int sysctl_igmp_max_memberships;
0196     int sysctl_igmp_max_msf;
0197     int sysctl_igmp_qrv;
0198 
0199     struct ping_group_range ping_group_range;
0200 
0201     atomic_t dev_addr_genid;
0202 
0203 #ifdef CONFIG_SYSCTL
0204     unsigned long *sysctl_local_reserved_ports;
0205     int sysctl_ip_prot_sock;
0206 #endif
0207 
0208 #ifdef CONFIG_IP_MROUTE
0209 #ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
0210     struct mr_table     *mrt;
0211 #else
0212     struct list_head    mr_tables;
0213     struct fib_rules_ops    *mr_rules_ops;
0214 #endif
0215 #endif
0216 #ifdef CONFIG_IP_ROUTE_MULTIPATH
0217     u32 sysctl_fib_multipath_hash_fields;
0218     u8 sysctl_fib_multipath_use_neigh;
0219     u8 sysctl_fib_multipath_hash_policy;
0220 #endif
0221 
0222     struct fib_notifier_ops *notifier_ops;
0223     unsigned int    fib_seq;    /* protected by rtnl_mutex */
0224 
0225     struct fib_notifier_ops *ipmr_notifier_ops;
0226     unsigned int    ipmr_seq;   /* protected by rtnl_mutex */
0227 
0228     atomic_t    rt_genid;
0229     siphash_key_t   ip_id_key;
0230 };
0231 #endif