ipv4: Namespaceify ip_default_ttl sysctl knob
Signed-off-by: Nikolay Borisov <kernel@kyup.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6cd21d7941
commit
fa50d974d1
8 changed files with 26 additions and 21 deletions
|
@ -79,9 +79,6 @@
|
|||
#include <linux/netlink.h>
|
||||
#include <linux/tcp.h>
|
||||
|
||||
int sysctl_ip_default_ttl __read_mostly = IPDEFTTL;
|
||||
EXPORT_SYMBOL(sysctl_ip_default_ttl);
|
||||
|
||||
static int
|
||||
ip_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
|
||||
unsigned int mtu,
|
||||
|
|
|
@ -1341,10 +1341,13 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname,
|
|||
val = inet->tos;
|
||||
break;
|
||||
case IP_TTL:
|
||||
{
|
||||
struct net *net = sock_net(sk);
|
||||
val = (inet->uc_ttl == -1 ?
|
||||
sysctl_ip_default_ttl :
|
||||
net->ipv4.sysctl_ip_default_ttl :
|
||||
inet->uc_ttl);
|
||||
break;
|
||||
}
|
||||
case IP_HDRINCL:
|
||||
val = inet->hdrincl;
|
||||
break;
|
||||
|
|
|
@ -21,6 +21,7 @@ static struct iphdr *
|
|||
synproxy_build_ip(struct sk_buff *skb, __be32 saddr, __be32 daddr)
|
||||
{
|
||||
struct iphdr *iph;
|
||||
struct net *net = sock_net(skb->sk);
|
||||
|
||||
skb_reset_network_header(skb);
|
||||
iph = (struct iphdr *)skb_put(skb, sizeof(*iph));
|
||||
|
@ -29,7 +30,7 @@ synproxy_build_ip(struct sk_buff *skb, __be32 saddr, __be32 daddr)
|
|||
iph->tos = 0;
|
||||
iph->id = 0;
|
||||
iph->frag_off = htons(IP_DF);
|
||||
iph->ttl = sysctl_ip_default_ttl;
|
||||
iph->ttl = net->ipv4.sysctl_ip_default_ttl;
|
||||
iph->protocol = IPPROTO_TCP;
|
||||
iph->check = 0;
|
||||
iph->saddr = saddr;
|
||||
|
|
|
@ -390,7 +390,7 @@ static int snmp_seq_show(struct seq_file *seq, void *v)
|
|||
|
||||
seq_printf(seq, "\nIp: %d %d",
|
||||
IPV4_DEVCONF_ALL(net, FORWARDING) ? 1 : 2,
|
||||
sysctl_ip_default_ttl);
|
||||
net->ipv4.sysctl_ip_default_ttl);
|
||||
|
||||
BUILD_BUG_ON(offsetof(struct ipstats_mib, mibs) != 0);
|
||||
for (i = 0; snmp4_ipstats_list[i].name != NULL; i++)
|
||||
|
|
|
@ -282,15 +282,6 @@ static struct ctl_table ipv4_table[] = {
|
|||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.procname = "ip_default_ttl",
|
||||
.data = &sysctl_ip_default_ttl,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &ip_ttl_min,
|
||||
.extra2 = &ip_ttl_max,
|
||||
},
|
||||
{
|
||||
.procname = "tcp_max_orphans",
|
||||
.data = &sysctl_tcp_max_orphans,
|
||||
|
@ -752,6 +743,15 @@ static struct ctl_table ipv4_net_table[] = {
|
|||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.procname = "ip_default_ttl",
|
||||
.data = &init_net.ipv4.sysctl_ip_default_ttl,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &ip_ttl_min,
|
||||
.extra2 = &ip_ttl_max,
|
||||
},
|
||||
{
|
||||
.procname = "ip_local_port_range",
|
||||
.maxlen = sizeof(init_net.ipv4.ip_local_ports.range),
|
||||
|
@ -988,6 +988,8 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
|
|||
if (!net->ipv4.sysctl_local_reserved_ports)
|
||||
goto err_ports;
|
||||
|
||||
net->ipv4.sysctl_ip_default_ttl = IPDEFTTL;
|
||||
|
||||
return 0;
|
||||
|
||||
err_ports:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue