[systemd-devel] [PATCH] networkd: fix systemd-networkd-wait-online with multiple NICs
Nick Owens
mischief at offblast.org
Thu Apr 2 15:08:43 PDT 2015
hi, sorry for the delay.
from http://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html:
"By default, it will wait for all links it is aware of and which are
managed by systemd-networkd.service(8) to be fully configured or
failed, *and for at least one link to gain a carrier.*".
the import part here is the end of the sentence. without this patch,
systemd-networkd-wait-online will block until all configured
interfaces have carrier.. you can reproduce this by running
systemd-networkd in qemu with two ethernet interfaces, and issue 'info
network' and then 'set_link <if> down' to simulate no carrier. then
you can run systemd-networkd-wait-online, and observe that it will
block until both interfaces are up, not just one.
nick
On Wed, Mar 25, 2015 at 10:53 PM, Andrei Borzenkov <arvidjaar at gmail.com> wrote:
> On Wed, Mar 25, 2015 at 11:49 PM, <mischief at offblast.org> wrote:
>> From: mischief <mischief at offblast.org>
>>
>> when checking interface status, systemd-networkd-wait-online
>> will continue to wait if any interface is still configuring or
>> being processed by udev. this patch allows it to return if any
>> one interface is degraded/routable, as per the manual.
>
> But current behavior is exactly what manual says: "By default, it will
> wait for all links it is aware of and which are managed by
> systemd-networkd.service(8) to be fully configured or failed". Or do I
> miss something?
>
>> ---
>> src/network/networkd-wait-online-manager.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/network/networkd-wait-online-manager.c b/src/network/networkd-wait-online-manager.c
>> index 1c997a5..1ac162a 100644
>> --- a/src/network/networkd-wait-online-manager.c
>> +++ b/src/network/networkd-wait-online-manager.c
>> @@ -74,13 +74,13 @@ bool manager_all_configured(Manager *m) {
>> if (!l->state) {
>> log_debug("link %s has not yet been processed by udev",
>> l->ifname);
>> - return false;
>> + continue;
>> }
>>
>> if (streq(l->state, "configuring")) {
>> log_debug("link %s is being processed by networkd",
>> l->ifname);
>> - return false;
>> + continue;
>> }
>>
>> if (l->operational_state &&
>> --
>> 2.0.5
>>
>> _______________________________________________
>> systemd-devel mailing list
>> systemd-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
More information about the systemd-devel
mailing list