mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 14:10:08 +01:00
nm-cloud-setup: refactor skipping reapply be checking for skip first
There should be no change in behavior, but this way seems nicer. Now _nmc_mangle_connection() doesn't return FALSE, it always will try to mangle the connection and requires the caller to first check whether that is appropriate. Just move some code outside of _nmc_mangle_connection() and let the caller check for the skip first. The point is consistency, as the caller already does some checks to whether skip the reapply. So it should do all the checks, so that "mangle" never fails/skips.
This commit is contained in:
parent
29b0420be7
commit
bbd32fba15
1 changed files with 31 additions and 20 deletions
|
|
@ -251,24 +251,38 @@ _get_config(GCancellable *sigterm_cancellable, NMCSProvider *provider, NMClient
|
|||
/*****************************************************************************/
|
||||
|
||||
static gboolean
|
||||
_nmc_skip_connection(NMConnection *connection)
|
||||
_nmc_skip_connection_by_user_data(NMConnection *connection)
|
||||
{
|
||||
NMSettingUser *s_user;
|
||||
const char *v;
|
||||
|
||||
s_user = NM_SETTING_USER(nm_connection_get_setting(connection, NM_TYPE_SETTING_USER));
|
||||
if (!s_user)
|
||||
return FALSE;
|
||||
|
||||
#define USER_TAG_SKIP "org.freedesktop.nm-cloud-setup.skip"
|
||||
|
||||
nm_assert(nm_setting_user_check_key(USER_TAG_SKIP, NULL));
|
||||
|
||||
v = nm_setting_user_get_data(s_user, USER_TAG_SKIP);
|
||||
return _nm_utils_ascii_str_to_bool(v, FALSE);
|
||||
s_user = NM_SETTING_USER(nm_connection_get_setting(connection, NM_TYPE_SETTING_USER));
|
||||
if (s_user) {
|
||||
v = nm_setting_user_get_data(s_user, USER_TAG_SKIP);
|
||||
if (_nm_utils_ascii_str_to_bool(v, FALSE))
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_nmc_skip_connection_by_type(NMConnection *connection)
|
||||
{
|
||||
if (!nm_streq0(nm_connection_get_connection_type(connection), NM_SETTING_WIRED_SETTING_NAME))
|
||||
return TRUE;
|
||||
|
||||
if (!nm_connection_get_setting_ip4_config(connection))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_nmc_mangle_connection(NMDevice *device,
|
||||
NMConnection *connection,
|
||||
const NMCSProviderGetConfigResult *result,
|
||||
|
|
@ -291,12 +305,8 @@ _nmc_mangle_connection(NMDevice *device,
|
|||
NM_SET_OUT(out_skipped_single_addr, FALSE);
|
||||
NM_SET_OUT(out_changed, FALSE);
|
||||
|
||||
if (!nm_streq0(nm_connection_get_connection_type(connection), NM_SETTING_WIRED_SETTING_NAME))
|
||||
return FALSE;
|
||||
|
||||
s_ip = nm_connection_get_setting_ip4_config(connection);
|
||||
if (!s_ip)
|
||||
return FALSE;
|
||||
nm_assert(NM_IS_SETTING_IP4_CONFIG(s_ip));
|
||||
|
||||
if ((ac = nm_device_get_active_connection(device))
|
||||
&& (remote_connection = NM_CONNECTION(nm_active_connection_get_connection(ac))))
|
||||
|
|
@ -428,7 +438,6 @@ _nmc_mangle_connection(NMDevice *device,
|
|||
rules_new->len);
|
||||
|
||||
NM_SET_OUT(out_changed, addrs_changed || routes_changed || rules_changed);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -497,23 +506,25 @@ try_again:
|
|||
return any_changes;
|
||||
}
|
||||
|
||||
if (_nmc_skip_connection(applied_connection)) {
|
||||
if (_nmc_skip_connection_by_user_data(applied_connection)) {
|
||||
_LOGD("config device %s: skip applied connection due to user data %s",
|
||||
hwaddr,
|
||||
USER_TAG_SKIP);
|
||||
return any_changes;
|
||||
}
|
||||
|
||||
if (!_nmc_mangle_connection(device,
|
||||
applied_connection,
|
||||
result,
|
||||
config_data,
|
||||
&skipped_single_addr,
|
||||
&changed)) {
|
||||
if (_nmc_skip_connection_by_type(applied_connection)) {
|
||||
_LOGD("config device %s: device has no suitable applied connection. Skip", hwaddr);
|
||||
return any_changes;
|
||||
}
|
||||
|
||||
_nmc_mangle_connection(device,
|
||||
applied_connection,
|
||||
result,
|
||||
config_data,
|
||||
&skipped_single_addr,
|
||||
&changed);
|
||||
|
||||
if (!changed) {
|
||||
if (skipped_single_addr) {
|
||||
_LOGD("config device %s: device needs no update to applied connection \"%s\" (%s) "
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue