diff options
author | 2025-04-17 17:03:52 -0700 | |
---|---|---|
committer | 2025-04-24 09:29:56 +0200 | |
commit | 71c0efb6d12f4c734b2a894c17e84ebab49b4c60 (patch) | |
tree | d2defe5189ccea34a29aa587b6b8e7354d279c51 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | ipv6: Rename rt6_nh.next to rt6_nh.list. (diff) | |
download | wireguard-linux-71c0efb6d12f4c734b2a894c17e84ebab49b4c60.tar.xz wireguard-linux-71c0efb6d12f4c734b2a894c17e84ebab49b4c60.zip |
ipv6: Factorise ip6_route_multipath_add().
We will get rid of RTNL from RTM_NEWROUTE and SIOCADDRT and rely
on RCU to guarantee dev and nexthop lifetime.
Then, the RCU section will start before ip6_route_info_create_nh()
in ip6_route_multipath_add(), but ip6_route_info_create() is called
in the same loop and will sleep.
Let's split the loop into ip6_route_mpath_info_create() and
ip6_route_mpath_info_create_nh().
Note that ip6_route_info_append() is now integrated into
ip6_route_mpath_info_create_nh() because we need to call different
free functions for nexthops that passed ip6_route_info_create_nh().
In case of failure, the remaining nexthops that ip6_route_info_create_nh()
has not been called for will be freed by ip6_route_mpath_info_cleanup().
OTOH, if a nexthop passes ip6_route_info_create_nh(), it will be linked
to a local temporary list, which will be spliced back to rt6_nh_list.
In case of failure, these nexthops will be released by fib6_info_release()
in ip6_route_multipath_add().
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250418000443.43734-12-kuniyu@amazon.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions