blob: 7283f4d39ae2e48b22060d3fa54a078d3b87741e [file] [log] [blame]
Pavel Emelyanov8afd3512007-12-16 13:29:36 -08001/*
2 * ipv4 in net namespaces
3 */
4
5#ifndef __NETNS_IPV4_H__
6#define __NETNS_IPV4_H__
Denis V. Luneve4e49712008-01-10 03:27:51 -08007
Eric W. Biederman7064d162012-05-24 10:34:21 -06008#include <linux/uidgid.h>
Pavel Emelyanovac18e752008-01-22 06:02:14 -08009#include <net/inet_frag.h>
10
David S. Miller51c5d0c2012-07-10 00:49:14 -070011struct tcpm_hash_bucket;
Pavel Emelyanov752d14d2007-12-16 13:31:47 -080012struct ctl_table_header;
13struct ipv4_devconf;
Denis V. Luneve4e49712008-01-10 03:27:51 -080014struct fib_rules_ops;
Denis V. Luneve4aef8a2008-01-10 03:28:24 -080015struct hlist_head;
David S. Millerf4530fa2012-07-05 22:13:13 -070016struct fib_table;
Denis V. Lunev6bd48fc2008-01-10 03:28:55 -080017struct sock;
Eric W. Biederman0bbf87d2013-09-28 14:10:59 -070018struct local_ports {
19 seqlock_t lock;
20 int range[2];
21};
Pavel Emelyanov752d14d2007-12-16 13:31:47 -080022
Cong Wangba6b9182014-05-06 11:02:50 -070023struct ping_group_range {
24 seqlock_t lock;
25 kgid_t range[2];
26};
27
Pavel Emelyanov8afd3512007-12-16 13:29:36 -080028struct netns_ipv4 {
Eric Dumazet2a75de02008-01-05 23:08:49 -080029#ifdef CONFIG_SYSCTL
Pavel Emelyanov752d14d2007-12-16 13:31:47 -080030 struct ctl_table_header *forw_hdr;
Pavel Emelyanove4a2d5c2008-01-22 06:08:36 -080031 struct ctl_table_header *frags_hdr;
Pavel Emelyanov68528f02008-03-26 01:56:24 -070032 struct ctl_table_header *ipv4_hdr;
Denis V. Lunev39a23e72008-07-05 19:02:33 -070033 struct ctl_table_header *route_hdr;
Michal Kubecek8d068872013-02-06 10:46:33 +010034 struct ctl_table_header *xfrm4_hdr;
Eric Dumazet2a75de02008-01-05 23:08:49 -080035#endif
Pavel Emelyanov752d14d2007-12-16 13:31:47 -080036 struct ipv4_devconf *devconf_all;
37 struct ipv4_devconf *devconf_dflt;
Denis V. Luneve4e49712008-01-10 03:27:51 -080038#ifdef CONFIG_IP_MULTIPLE_TABLES
39 struct fib_rules_ops *rules_ops;
David S. Millerf4530fa2012-07-05 22:13:13 -070040 bool fib_has_custom_rules;
41 struct fib_table *fib_local;
42 struct fib_table *fib_main;
43 struct fib_table *fib_default;
44#endif
45#ifdef CONFIG_IP_ROUTE_CLASSID
46 int fib_num_tclassid_users;
Denis V. Luneve4e49712008-01-10 03:27:51 -080047#endif
Denis V. Luneve4aef8a2008-01-10 03:28:24 -080048 struct hlist_head *fib_table_hash;
Denis V. Lunev6bd48fc2008-01-10 03:28:55 -080049 struct sock *fibnl;
Pavel Emelyanovac18e752008-01-22 06:02:14 -080050
Eric Dumazet349c9e32015-01-29 15:58:09 -080051 struct sock * __percpu *icmp_sk;
52
Gao fengc8a627e2012-06-08 01:20:41 +000053 struct inet_peer_base *peers;
David S. Miller51c5d0c2012-07-10 00:49:14 -070054 struct tcpm_hash_bucket *tcp_metrics_hash;
Eric Dumazet5815d5e2012-07-19 23:02:34 +000055 unsigned int tcp_metrics_hash_log;
Pavel Emelyanovac18e752008-01-22 06:02:14 -080056 struct netns_frags frags;
Alexey Dobriyan9335f042008-01-31 04:03:23 -080057#ifdef CONFIG_NETFILTER
58 struct xt_table *iptable_filter;
59 struct xt_table *iptable_mangle;
60 struct xt_table *iptable_raw;
Alexey Dobriyan9ea0cb22008-01-31 04:05:09 -080061 struct xt_table *arptable_filter;
Alexey Dobriyane9d38972010-01-18 08:08:37 +010062#ifdef CONFIG_SECURITY
James Morris560ee652008-06-09 15:57:24 -070063 struct xt_table *iptable_security;
Alexey Dobriyane9d38972010-01-18 08:08:37 +010064#endif
Alexey Dobriyane099a172008-10-08 11:35:10 +020065 struct xt_table *nat_table;
Alexey Dobriyan9335f042008-01-31 04:03:23 -080066#endif
Pavel Emelyanova24022e2008-03-26 01:55:37 -070067
68 int sysctl_icmp_echo_ignore_all;
69 int sysctl_icmp_echo_ignore_broadcasts;
70 int sysctl_icmp_ignore_bogus_error_responses;
71 int sysctl_icmp_ratelimit;
72 int sysctl_icmp_ratemask;
73 int sysctl_icmp_errors_use_inbound_ifaddr;
Denis V. Lunev9f5e97e2008-07-05 19:02:59 -070074
Cong Wangc9d8f1a2014-05-06 11:02:49 -070075 struct local_ports ip_local_ports;
Eric W. Biederman0bbf87d2013-09-28 14:10:59 -070076
Hannes Frederic Sowa5d134f12013-01-05 16:10:48 +000077 int sysctl_tcp_ecn;
Hannes Frederic Sowa974eda12013-12-14 05:13:38 +010078 int sysctl_ip_no_pmtu_disc;
Hannes Frederic Sowaf87c10a2014-01-09 10:01:15 +010079 int sysctl_ip_fwd_use_pmtu;
Vincent Bernat49a60152014-09-05 15:09:03 +020080 int sysctl_ip_nonlocal_bind;
Hannes Frederic Sowa5d134f12013-01-05 16:10:48 +000081
Lorenzo Colittie1108612014-05-13 10:17:33 -070082 int sysctl_fwmark_reflect;
Lorenzo Colitti84f39b02014-05-13 10:17:35 -070083 int sysctl_tcp_fwmark_accept;
Lorenzo Colittie1108612014-05-13 10:17:33 -070084
Cong Wangba6b9182014-05-06 11:02:50 -070085 struct ping_group_range ping_group_range;
Vasiliy Kulikovc319b4d2011-05-13 10:01:00 +000086
David S. Miller436c3b62011-03-24 17:42:21 -070087 atomic_t dev_addr_genid;
Benjamin Thery70a269e2009-01-22 04:56:15 +000088
WANG Cong122ff242014-05-12 16:04:53 -070089#ifdef CONFIG_SYSCTL
90 unsigned long *sysctl_local_reserved_ports;
91#endif
92
Benjamin Thery70a269e2009-01-22 04:56:15 +000093#ifdef CONFIG_IP_MROUTE
Patrick McHardyf0ad0862010-04-13 05:03:23 +000094#ifndef CONFIG_IP_MROUTE_MULTIPLE_TABLES
Patrick McHardy0c122952010-04-13 05:03:22 +000095 struct mr_table *mrt;
Patrick McHardyf0ad0862010-04-13 05:03:23 +000096#else
97 struct list_head mr_tables;
98 struct fib_rules_ops *mr_rules_ops;
99#endif
Benjamin Thery70a269e2009-01-22 04:56:15 +0000100#endif
fan.duca4c3fc2013-07-30 08:33:53 +0800101 atomic_t rt_genid;
Pavel Emelyanov8afd3512007-12-16 13:29:36 -0800102};
103#endif