Skip to contentSkip to conversation

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

DISCUSSION Tero Marttila 1 participant 1 message Jun 24, 2015

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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