Re: [PATCH] net: ipv6: don't generate link-local address in any addr_gen_mode
From: Rocco Yue <hidden>
Date: 2021-07-13 02:05:18
Also in:
linux-arm-kernel, linux-mediatek, lkml
quoted
According to your suggestion, I checked the ipv6 code again. In my opinion, adding another addr_gen_mode may not be suitable. (1) In the user space, the process enable the ipv6 stable privacy mode by setting the "/proc/sys/net/ipv6/conf/<iface>/stable_secret". In the kernel, the addr_gen_mode of a networking device is switched to IN6_ADDR_GEN_MODE_STABLE_PRIVACY by judging the bool value of "cnf.stable_secret.initialized".and that can be updated. If the default (inherited) setting is IN6_ADDR_GEN_MODE_STABLE_PRIVACY_NO_LLA, then do not change to IN6_ADDR_GEN_MODE_STABLE_PRIVACY.quoted
So, although adding an additional IN6_ADDR_GEN_MODE_STABLE_PRIVACY_NO_LLA, user space process has some trouble to let kernel switch the iface's addr_gen_mode to the IN6_ADDR_GEN_MODE_STABLE_PRIVACY_NO_LLA. This is not as flexible as adding a separate sysctl. (2) After adding "proc/sys/net/ipv6/<iface>/disable_gen_linklocal_addr", so that kernel can keep the original code logic of the stable_secret proc file, and expand when the subsequent kernel adds a new add_gen_mode more flexibility and applicability. And we only need to care about the networking device that do not generate an ipv6 link-local address, and not the addr_gen_mode that this device is using. Maybe adding a separate sysctl is a better choice. Looking forward to your professional reply again.per device sysctl's are not free. I do not see a valid reason for a separate disable knob.
Hi David, Thanks for your reply, honstly, this separate sysctl is really useful and convenient. It allows users to simply configure the disable_gen_linklocal_addr proc file to achieve customized configuration of ipv6 link-local address without worrying about when the kernel will automatically generate a link-local address. At the same time, maybe a new addr_gen_mode will be added in the future. If the method of adding a sysctl is adopted, we don't need to consider the existing addr_gen_mode and the impact of adding another new addr_gen_mode in the future. Just simply echoing different values to the disable_gen_linklocal_addr proc file can achieve this needs. Thanks, Rocco