This patchset fixes the connectivity problem for containers with RA-derived default route, after they were migrated using criu: the default routes would lose their "expires" value and become stuck forever. The corresponding criu issue with the discussion is at https://github.com/xemul/criu/issues/177
The latter uses "ip -6 route save" to save the routes during the migration, and "ip -6 route restore" during restore, so the problem is easily reproducible even without criu. There are two problems, hence two patches in this patchset: 1) the expiry time for the route is saved in RTA_CACHEINFO via rtnl_put_cacheinfo, but the code in rtm_to_fib6_config expects the RTA_EXPIRES. Rather than cherrypicking in the restore code path from RTA_CACHEINFO, adding RTA_EXPIRES upon save seemed like a better option. 2) the restored route, even with the properly restored expires, does not have the correct RTF_* flags set (RTF_ADDRCONF|RTF_DEFAULT), preventing the incoming router advertisements from updating it. During the code review I noticed RTF_ROUTEINFO would be also lost during save/restore. This can be viewed as an operation symmetric to that done in f0396f60d7c165018c9b203fb9b89fb224835578. Tested both net and net-next with the patches. Changes since v1 [1]: * Fixed the indentation in both patches as per David Miller's review comments: - basic block indented always by a TAB - multiline function call second line to start at the first column after the opening parenthesis of the function call, using appropriate number of TABs (and SPC only at the end, if needed). [1] v1: http://marc.info/?l=linux-netdev&m=147135599322286&w=2 Andrew Yourtchenko (2): ipv6: save route expiry in RTA_EXPIRES if RTF_EXPIRES set ipv6: fixup RTF_* flags when restoring RTPROT_RA route from rtnetlink net/ipv6/route.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -- 2.7.4