From 5686f7aa502efeeb43973ea764e5fb54a5f15d34 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 10 May 2022 21:09:20 +0200 Subject: [PATCH] dhcp: move code in nm_dhcp_client_handle_event() (cherry picked from commit 9097679aadc439c23a3f45b47a7eb8b5ca1a7712) (cherry picked from commit d0fcd690dc812cda5c54dae9e61d33c14ecf3275) --- src/core/dhcp/nm-dhcp-client.c | 52 ++++++++++++++-------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/core/dhcp/nm-dhcp-client.c b/src/core/dhcp/nm-dhcp-client.c index 471f6fe083..0930bcdf0e 100644 --- a/src/core/dhcp/nm-dhcp-client.c +++ b/src/core/dhcp/nm-dhcp-client.c @@ -910,7 +910,6 @@ nm_dhcp_client_handle_event(gpointer unused, NMPlatformIP6Address prefix = { 0, }; - gboolean reason_is_bound; g_return_val_if_fail(NM_IS_DHCP_CLIENT(self), FALSE); g_return_val_if_fail(iface != NULL, FALSE); @@ -930,17 +929,24 @@ nm_dhcp_client_handle_event(gpointer unused, if (NM_IN_STRSET_ASCII_CASE(reason, "preinit")) return TRUE; - reason_is_bound = NM_IN_STRSET_ASCII_CASE(reason, - "bound", - "bound6", - "static", - "renew", - "renew6", - "reboot", - "rebind", - "rebind6"); + if (NM_IN_STRSET_ASCII_CASE(reason, "bound", "bound6", "static")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_BOUND; + else if (NM_IN_STRSET_ASCII_CASE(reason, "renew", "renew6", "reboot", "rebind", "rebind6")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_EXTENDED; + else if (NM_IN_STRSET_ASCII_CASE(reason, "timeout")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_TIMEOUT; + else if (NM_IN_STRSET_ASCII_CASE(reason, "nak", "expire", "expire6")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_EXPIRE; + else if (NM_IN_STRSET_ASCII_CASE(reason, "end", "stop", "stopped")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_TERMINATED; + else if (NM_IN_STRSET_ASCII_CASE(reason, "fail", "abend")) + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_FAIL; + else + client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_UNSPECIFIED; - if (reason_is_bound) { + if (NM_IN_SET(client_event_type, + NM_DHCP_CLIENT_EVENT_TYPE_BOUND, + NM_DHCP_CLIENT_EVENT_TYPE_EXTENDED)) { gs_unref_hashtable GHashTable *str_options = NULL; GVariantIter iter; const char *name; @@ -989,27 +995,13 @@ nm_dhcp_client_handle_event(gpointer unused, return TRUE; } - /* Fail if no valid IP config was received */ - if (reason_is_bound && !l3cd) { + if (NM_IN_SET(client_event_type, + NM_DHCP_CLIENT_EVENT_TYPE_BOUND, + NM_DHCP_CLIENT_EVENT_TYPE_EXTENDED) + && !l3cd) { + /* Fail if no valid IP config was received */ _LOGW("client bound but IP config not received"); client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_FAIL; - } else { - if (NM_IN_STRSET_ASCII_CASE(reason, "bound", "bound6", "static")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_BOUND; - else if (NM_IN_STRSET_ASCII_CASE(reason, "renew", "renew6", "reboot", "rebind", "rebind6")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_EXTENDED; - else if (NM_IN_STRSET_ASCII_CASE(reason, "timeout")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_TIMEOUT; - else if (NM_IN_STRSET_ASCII_CASE(reason, "nak", "expire", "expire6")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_EXPIRE; - else if (NM_IN_STRSET_ASCII_CASE(reason, "end", "stop", "stopped")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_TERMINATED; - else if (NM_IN_STRSET_ASCII_CASE(reason, "fail", "abend")) - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_FAIL; - else if (NM_IN_STRSET_ASCII_CASE(reason, "preinit")) - return TRUE; - else - client_event_type = NM_DHCP_CLIENT_EVENT_TYPE_UNSPECIFIED; } _nm_dhcp_client_notify(self, client_event_type, l3cd);