device: check DAD result for manual method even without carrier

IPv4 and IPv6 DAD work slightly differently: for IPv4 the presence or
absence of carrier doesn't have any effect on the duration of the
probe; for IPv6, DAD never completes without carrier because kernel
never removes the tentative flag.

In both cases, we shouldn't ignore the DAD result because that would
mean that we complete the ipmanual method without addresses actually
configured.

(cherry picked from commit 1f73034719)
This commit is contained in:
Beniamino Galvani 2023-09-08 11:45:58 +02:00
parent 233d89da4b
commit 707ddcfaac

View file

@ -10392,11 +10392,8 @@ _dev_ipmanual_check_ready(NMDevice *self)
}
}
flags = NM_L3CFG_CHECK_READY_FLAGS_NONE;
if (has_carrier) {
flags |= NM_L3CFG_CHECK_READY_FLAGS_IP4_ACD_READY;
flags |= NM_L3CFG_CHECK_READY_FLAGS_IP6_DAD_READY;
}
flags = NM_L3CFG_CHECK_READY_FLAGS_IP4_ACD_READY;
flags |= NM_L3CFG_CHECK_READY_FLAGS_IP6_DAD_READY;
for (IS_IPv4 = 0; IS_IPv4 < 2; IS_IPv4++) {
const int addr_family = IS_IPv4 ? AF_INET : AF_INET6;