ipv4: Fix non-initialized TTL when CONFIG_SYSCTL=n
Commitfa50d974d1
("ipv4: Namespaceify ip_default_ttl sysctl knob") moves the default TTL assignment, and as side-effect IPv4 TTL now has a default value only if sysctl support is enabled (CONFIG_SYSCTL=y). The sysctl_ip_default_ttl is fundamental for IP to work properly, as it provides the TTL to be used as default. The defautl TTL may be used in ip_selected_ttl, through the following flow: ip_select_ttl ip4_dst_hoplimit net->ipv4.sysctl_ip_default_ttl This commit fixes the issue by assigning net->ipv4.sysctl_ip_default_ttl in net_init_net, called during ipv4's initialization. Without this commit, a kernel built without sysctl support will send all IP packets with zero TTL (unless a TTL is explicitly set, e.g. with setsockopt). Given a similar issue might appear on the other knobs that were namespaceify, this commit also moves them. Fixes:fa50d974d1
("ipv4: Namespaceify ip_default_ttl sysctl knob") Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
2ece068e1b
Коммит
049bbf589e
|
@ -1681,6 +1681,14 @@ static __net_init int inet_init_net(struct net *net)
|
||||||
*/
|
*/
|
||||||
net->ipv4.ping_group_range.range[0] = make_kgid(&init_user_ns, 1);
|
net->ipv4.ping_group_range.range[0] = make_kgid(&init_user_ns, 1);
|
||||||
net->ipv4.ping_group_range.range[1] = make_kgid(&init_user_ns, 0);
|
net->ipv4.ping_group_range.range[1] = make_kgid(&init_user_ns, 0);
|
||||||
|
|
||||||
|
/* Default values for sysctl-controlled parameters.
|
||||||
|
* We set them here, in case sysctl is not compiled.
|
||||||
|
*/
|
||||||
|
net->ipv4.sysctl_ip_default_ttl = IPDEFTTL;
|
||||||
|
net->ipv4.sysctl_ip_dynaddr = 0;
|
||||||
|
net->ipv4.sysctl_ip_early_demux = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -999,10 +999,6 @@ static __net_init int ipv4_sysctl_init_net(struct net *net)
|
||||||
if (!net->ipv4.sysctl_local_reserved_ports)
|
if (!net->ipv4.sysctl_local_reserved_ports)
|
||||||
goto err_ports;
|
goto err_ports;
|
||||||
|
|
||||||
net->ipv4.sysctl_ip_default_ttl = IPDEFTTL;
|
|
||||||
net->ipv4.sysctl_ip_dynaddr = 0;
|
|
||||||
net->ipv4.sysctl_ip_early_demux = 1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_ports:
|
err_ports:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче