Subject: Behaviour of sysctl net.ipv6.conf.all.* parameters

From: Tero Marttila <[email-masked]>
Date: Wed, 24 Jun 2015 17:17:42 +0300

Hi,

I was exploring the behavior of various net.ipv6.conf.all parameters
such as use_tempaddr on Linux 3.16, but the behavior doesn't seem to
make sense.

The following settings do *not* result in privacy addresses on eth0:

	net.ipv6.conf.all.use_tempaddr=2
	net.ipv6.conf.eth0.use_tempaddr=0

But the following settings do:

	net.ipv6.conf.all.use_tempaddr=0
	net.ipv6.conf.eth0.use_tempaddr=2

This doesn't make sense per any of the AND/OR/MAX semantics as used for
e.g. net.ipv4.conf.all.

Looking at the net/ipv6/addrconf.c implementation, I can figure out
where net.ipv6.conf.default is implemented, and some handling for
specific devconf_all parameters (forwarding, disable_ipv6, proxy_ndp),
but I am unable to find any link between struct
netns_ipv6.devconf_all.use_tempaddr and struct inet6_dev.cnf.use_tempaddr.

Does anyone have any pointers for where this linking logic would be
implemented, or are the majority of net.ipv6.conf.all.* sysctl
parameters actually complete no-ops?

 -- Tero Marttila