libnm-core: add _nm_setting_find_in_list_required() function
This is an utility function that can be called during verify() to find an NMSetting from @all_settings. This is especially useful for looking up the NMSettingConnection which usually is present. So just get it quickly. In the unexpected case that it is missing, it sets @error and we can return. Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
@@ -90,6 +90,12 @@ static void __attribute__((constructor)) register_setting (void) \
|
|||||||
|
|
||||||
NMSetting *nm_setting_find_in_list (GSList *settings_list, const char *setting_name);
|
NMSetting *nm_setting_find_in_list (GSList *settings_list, const char *setting_name);
|
||||||
|
|
||||||
|
NMSetting * _nm_setting_find_in_list_required (GSList *all_settings,
|
||||||
|
const char *setting_name,
|
||||||
|
GError **error,
|
||||||
|
const char *error_prefix_setting_name,
|
||||||
|
const char *error_prefix_property_name);
|
||||||
|
|
||||||
NMSettingVerifyResult _nm_setting_verify_deprecated_virtual_iface_name (const char *interface_name,
|
NMSettingVerifyResult _nm_setting_verify_deprecated_virtual_iface_name (const char *interface_name,
|
||||||
gboolean allow_missing,
|
gboolean allow_missing,
|
||||||
const char *setting_name,
|
const char *setting_name,
|
||||||
|
@@ -1288,6 +1288,34 @@ nm_setting_get_virtual_iface_name (NMSetting *setting)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NMSetting *
|
||||||
|
_nm_setting_find_in_list_required (GSList *all_settings,
|
||||||
|
const char *setting_name,
|
||||||
|
GError **error,
|
||||||
|
const char *error_prefix_setting_name,
|
||||||
|
const char *error_prefix_property_name)
|
||||||
|
{
|
||||||
|
NMSetting *setting;
|
||||||
|
|
||||||
|
g_return_val_if_fail (!error || !*error, NULL);
|
||||||
|
g_return_val_if_fail (all_settings, NULL);
|
||||||
|
g_return_val_if_fail (setting_name, NULL);
|
||||||
|
g_return_val_if_fail (!error_prefix_setting_name == !error_prefix_property_name, NULL);
|
||||||
|
|
||||||
|
setting = nm_setting_find_in_list (all_settings, setting_name);
|
||||||
|
if (!setting) {
|
||||||
|
g_set_error (error,
|
||||||
|
NM_CONNECTION_ERROR,
|
||||||
|
!strcmp (setting_name, NM_SETTING_CONNECTION_SETTING_NAME)
|
||||||
|
? NM_CONNECTION_ERROR_CONNECTION_SETTING_NOT_FOUND
|
||||||
|
: NM_CONNECTION_ERROR_SETTING_NOT_FOUND,
|
||||||
|
_("Missing '%s' setting"),
|
||||||
|
setting_name);
|
||||||
|
if (error_prefix_setting_name)
|
||||||
|
g_prefix_error (error, "%s.%s: ", error_prefix_setting_name, error_prefix_property_name);
|
||||||
|
}
|
||||||
|
return setting;
|
||||||
|
}
|
||||||
|
|
||||||
NMSettingVerifyResult
|
NMSettingVerifyResult
|
||||||
_nm_setting_verify_deprecated_virtual_iface_name (const char *interface_name,
|
_nm_setting_verify_deprecated_virtual_iface_name (const char *interface_name,
|
||||||
|
Reference in New Issue
Block a user