dhcp: replace switch in l3_cfg_notify_cb() with if blocks

The l3_cfg_notify_cb() handler is used for different purposes, and
different events will be considered.

Usually a switch statement is very nice for enums, especially if all
enum values should be handled (because the compiler can warn about
unhandled cases). In this case, not all events are supposed to be
handled. At this point, it seems nicer to just use an if block. It
better composes.

The compiler should be able to optimize both variants to the same
result. In any case, checking some integers for equality is in any case
going to be efficient.
This commit is contained in:
Thomas Haller
2022-05-16 21:41:33 +02:00
parent e756533002
commit 7db07faa5e

View File

@@ -582,15 +582,11 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
nm_assert(l3cfg == priv->config.l3cfg); nm_assert(l3cfg == priv->config.l3cfg);
switch (notify_data->notify_type) { if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE
case NM_L3_CONFIG_NOTIFY_TYPE_PLATFORM_CHANGE_ON_IDLE: && priv->l3cfg_notify.wait_ll_address) {
{
const NMPlatformIP6Address *addr; const NMPlatformIP6Address *addr;
gs_free_error GError *error = NULL; gs_free_error GError *error = NULL;
if (!priv->l3cfg_notify.wait_ll_address)
return;
addr = ipv6_lladdr_find(self); addr = ipv6_lladdr_find(self);
if (addr) { if (addr) {
_LOGD("got IPv6LL address, starting transaction"); _LOGD("got IPv6LL address, starting transaction");
@@ -608,11 +604,10 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
})); }));
} }
} }
break;
} }
case NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT:
{ if (notify_data->notify_type == NM_L3_CONFIG_NOTIFY_TYPE_POST_COMMIT
&& priv->l3cfg_notify.wait_dhcp_commit) {
const NML3ConfigData *committed_l3cd; const NML3ConfigData *committed_l3cd;
NMDedupMultiIter ipconf_iter; NMDedupMultiIter ipconf_iter;
const NMPlatformIPAddress *lease_address; const NMPlatformIPAddress *lease_address;
@@ -623,9 +618,6 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
* configured. If the address was added, we can proceed accepting the * configured. If the address was added, we can proceed accepting the
* lease and notifying NMDevice. */ * lease and notifying NMDevice. */
if (!priv->l3cfg_notify.wait_dhcp_commit)
return;
nm_l3_config_data_iter_ip_address_for_each (&ipconf_iter, nm_l3_config_data_iter_ip_address_for_each (&ipconf_iter,
priv->l3cd, priv->l3cd,
priv->config.addr_family, priv->config.addr_family,
@@ -641,12 +633,12 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
address4->address, address4->address,
address4->plen, address4->plen,
address4->peer_address)) address4->peer_address))
return; goto wait_dhcp_commit_done;
} else { } else {
const NMPlatformIP6Address *address6 = (const NMPlatformIP6Address *) lease_address; const NMPlatformIP6Address *address6 = (const NMPlatformIP6Address *) lease_address;
if (!nm_l3_config_data_lookup_address_6(committed_l3cd, &address6->address)) if (!nm_l3_config_data_lookup_address_6(committed_l3cd, &address6->address))
return; goto wait_dhcp_commit_done;
} }
priv->l3cfg_notify.wait_dhcp_commit = FALSE; priv->l3cfg_notify.wait_dhcp_commit = FALSE;
@@ -662,7 +654,7 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
.notify_type = NM_DHCP_CLIENT_NOTIFY_TYPE_IT_LOOKS_BAD, .notify_type = NM_DHCP_CLIENT_NOTIFY_TYPE_IT_LOOKS_BAD,
.it_looks_bad.reason = reason, .it_looks_bad.reason = reason,
})); }));
return; goto wait_dhcp_commit_done;
} }
_emit_notify( _emit_notify(
@@ -672,11 +664,8 @@ l3_cfg_notify_cb(NML3Cfg *l3cfg, const NML3ConfigNotifyData *notify_data, NMDhcp
.l3cd = priv->l3cd, .l3cd = priv->l3cd,
.accepted = TRUE, .accepted = TRUE,
}})); }}));
break;
};
default:
/* ignore */;
} }
wait_dhcp_commit_done:
} }
gboolean gboolean