]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/network/networkd-queue.c
network: use request queue to configure addresses, routes, and nexthops
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 5 May 2021 13:46:44 +0000 (22:46 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 12 May 2021 02:26:06 +0000 (11:26 +0900)
commit76c5a0f27bb578b9069d779eed72f6c4f26976ac
treeeb47324d26ab5bbe8caedf692fc588739bcba8d6
parent40ca350ea1846d28fb3403217d47ed87eac57ad7
network: use request queue to configure addresses, routes, and nexthops

Why is this necessary? Several examples below.

- When a route sets prefsrc, then the address must be already assigned
  (see issue #19285), and also it must be ready if IPv6.
- When a route or nexthop sets gateway, then the address must be reachable.
- When a route sets nexthop ID, then the corresponding nexthop must be
  assigned.
- When a route sets multipath routes on another interface, then the
  interface must exist and be ready to configure.
- When configuring address, the same address must not be under removing
  (see issue #18108).
Etc,. etc,...

So, this makes all requests about addresses, routes, and nethops are once
stored in the queue, and will be processed when they are ready to configure.

Fixes #18108 and #19285.
16 files changed:
src/network/networkd-address.c
src/network/networkd-address.h
src/network/networkd-dhcp4.c
src/network/networkd-dhcp6.c
src/network/networkd-dhcp6.h
src/network/networkd-ipv4ll.c
src/network/networkd-link.c
src/network/networkd-link.h
src/network/networkd-manager.h
src/network/networkd-ndisc.c
src/network/networkd-nexthop.c
src/network/networkd-nexthop.h
src/network/networkd-queue.c
src/network/networkd-queue.h
src/network/networkd-route.c
src/network/networkd-route.h