Hello, On Fri Oct 9, 2026 at 12:28 PM CEST, Akash Hadke via lists.openembedded.org wrote: > From: Akash Hadke <[email protected]> > > Backport upstream systemd PR #41000 to v255.22 to fix route handling > in systemd-networkd when routes are configured on links that are not > yet up. > > In 255.21, networkd only checks link readiness when configuring > explicit nexthops. Routes using an implicit nexthop can therefore > be processed while the bound link is still down, which breaks setups > using ConfigureWithoutCarrier= and BindCarrier=. One visible symptom > is that static multicast routes are not installed until much later, > or are missed entirely, even though the address configuration succeeds. > > The upstream fix makes the readiness checks consistent by introducing > a common link_is_up() helper, limiting gateway readiness checks to > nexthops that are actually bound to a link, and moving the > "link must be up" check into the shared gateway readiness path so both > explicit and implicit nexthops follow the same logic. Upstream also > adds a regression test for issue #40106. > > This backport is needed to keep route configuration reliable on > carrier-dependent interfaces in our 255.22-based systemd. > > Ref: https://github.com/systemd/systemd/pull/41000 > https://github.com/systemd/systemd/issues/40106 > > Tested: > - Built core-image-minimal with INIT_MANAGER = "systemd" on qemux86-64. > - Verified functional test case in QEMU: > * Setup dummy parent (carrier off) and VLAN child with BindCarrier=. > * Verified multicast route remains deferred while carrier is down. > * Verified multicast route installs immediately upon carrier up. > * Verified clean route recovery across carrier toggles. > > Signed-off-by: Akash Hadke <[email protected]> > Signed-off-by: Akash Hadke <[email protected]> > --- > ...introduce-link_is_up-helper-function.patch | 167 ++++++++++++++++++ > ...-gateway-is-ready-only-when-the-next.patch | 74 ++++++++ > ...und-to-a-link-requires-the-link-is-u.patch | 59 +++++++ > ...etwork-add-test-case-for-issue-40106.patch | 120 +++++++++++++ > meta/recipes-core/systemd/systemd_255.22.bb | 4 + > 5 files changed, 424 insertions(+) > create mode 100644 > meta/recipes-core/systemd/systemd/0023-network-introduce-link_is_up-helper-function.patch > create mode 100644 > meta/recipes-core/systemd/systemd/0024-network-check-if-gateway-is-ready-only-when-the-next.patch > create mode 100644 > meta/recipes-core/systemd/systemd/0025-network-route-bound-to-a-link-requires-the-link-is-u.patch > create mode 100644 > meta/recipes-core/systemd/systemd/0026-test-network-add-test-case-for-issue-40106.patch > > diff --git > a/meta/recipes-core/systemd/systemd/0023-network-introduce-link_is_up-helper-function.patch > > b/meta/recipes-core/systemd/systemd/0023-network-introduce-link_is_up-helper-function.patch > new file mode 100644 > index 0000000000..45f2733b50 > --- /dev/null > +++ > b/meta/recipes-core/systemd/systemd/0023-network-introduce-link_is_up-helper-function.patch > @@ -0,0 +1,167 @@ > +From ec4f646759d6625bbafcd4ce67224fb63b99a96c Mon Sep 17 00:00:00 2001 > +From: Yu Watanabe <[email protected]> > +Date: Mon, 9 Mar 2026 10:57:06 +0900 > +Subject: [PATCH] network: introduce link_is_up() helper function > + > +Upstream-Status: Backport > [https://github.com/systemd/systemd/pull/41000/commits/ec4f646759d6625bbafcd4ce67224fb63b99a96c] > +Comment: Patch is refreshed based on the 255.22 codebase > +Did not pick changes from the below files as it is not matches to our code > base. > +src/network/netdev/bond.c > +src/network/networkd-route.c > + > +Signed-off-by: Akash Hadke <[email protected]> > +--- > + src/network/networkd-link.c | 21 +++++++++++---------- > + src/network/networkd-link.h | 1 + > + src/network/networkd-nexthop.c | 2 +- > + src/network/networkd-setlink.c | 9 ++++----- > + 4 files changed, 17 insertions(+), 16 deletions(-)
After some thoughts, this patch looks too intrusive "just" to add the link_is_up() function that is just a flag check. I know I usually ask to use upstream as much as possible but here, I think it make sense to port the relevant code without the link_is_up() function addition (and keep the inlined flag check). Note: it matters less now but I prefer plain /commit/ URLs instead of the one from the pull request: https://github.com/systemd/systemd/commit/ec4f646759d6625bbafcd4ce67224fb63b99a96c Thanks! -- Yoann Congal Smile ECS
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#247902): https://lists.openembedded.org/g/openembedded-core/message/247902 Mute This Topic: https://lists.openembedded.org/mt/121670956/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
