diff --git a/ChangeLog b/ChangeLog index 4f304e2169..4605e7d9f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-10-23 Dan Williams + + * libnm-util/nm-setting.c + libnm-util/nm-setting.h + - (nm_setting_verify): new function; verify one setting + - (nm_settings_verify_all): rename from nm_settings_verify() + - (setting_connection_verify, setting_wireless_verify): allow NULL + all_settings + + * libnm-util/nm-connection.c + - (nm_connection_replace_settings, nm_connection_verify, + nm_connection_new_from_hash): handle nm_settings_verify() rename + 2007-10-23 Dan Williams * src/nm-device-802-11-wireless.c diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index 286ee01fe1..8354fa883f 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -147,7 +147,7 @@ nm_connection_replace_settings (NMConnection *connection, return FALSE; } - if (!nm_settings_verify (priv->settings)) { + if (!nm_settings_verify_all (priv->settings)) { g_warning ("Settings invalid."); return FALSE; } @@ -177,7 +177,7 @@ nm_connection_verify (NMConnection *connection) g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); priv = NM_CONNECTION_GET_PRIVATE (connection); - return nm_settings_verify (priv->settings); + return nm_settings_verify_all (priv->settings); } void @@ -486,7 +486,7 @@ nm_connection_new_from_hash (GHashTable *hash) return NULL; } - if (!nm_settings_verify (priv->settings)) { + if (!nm_settings_verify_all (priv->settings)) { g_object_unref (connection); return NULL; } diff --git a/libnm-util/nm-setting.c b/libnm-util/nm-setting.c index 329a9f17c8..5e550be027 100644 --- a/libnm-util/nm-setting.c +++ b/libnm-util/nm-setting.c @@ -24,6 +24,15 @@ nm_setting_populate_from_hash (NMSetting *setting, GHashTable *hash) return nm_setting_populate_from_hash_default (setting, hash); } +gboolean +nm_setting_verify (NMSetting *setting) +{ + g_return_val_if_fail (setting != NULL, FALSE); + + if (setting->verify_fn) + return setting->verify_fn (setting, NULL); +} + typedef struct { gboolean success; GHashTable *all_settings; @@ -41,11 +50,13 @@ verify_one_setting (gpointer key, gpointer value, gpointer user_data) } gboolean -nm_settings_verify (GHashTable *all_settings) +nm_settings_verify_all (GHashTable *all_settings) { gpointer p; VerifySettingsInfo info; + g_return_val_if_fail (all_settings != NULL, FALSE); + /* First, make sure there's at least 'connection' setting */ p = g_hash_table_lookup (all_settings, NM_SETTING_CONNECTION); if (!p) { @@ -574,7 +585,7 @@ setting_connection_verify (NMSetting *setting, GHashTable *all_settings) return FALSE; /* Make sure the corresponding 'type' item is present */ - if (!g_hash_table_lookup (all_settings, self->type)) + if (all_settings && !g_hash_table_lookup (all_settings, self->type)) return FALSE; return TRUE; @@ -815,7 +826,9 @@ setting_wireless_verify (NMSetting *setting, GHashTable *all_settings) } } - if (self->security && !g_hash_table_lookup (all_settings, self->security)) { + if ( self->security + && all_settings + && !g_hash_table_lookup (all_settings, self->security)) { g_warning ("Invalid or missing security"); return FALSE; } diff --git a/libnm-util/nm-setting.h b/libnm-util/nm-setting.h index dabb71e687..ad0eb1d1df 100644 --- a/libnm-util/nm-setting.h +++ b/libnm-util/nm-setting.h @@ -66,8 +66,10 @@ struct _NMSetting { NMSettingDestroyFn destroy_fn; }; +gboolean nm_settings_verify_all (GHashTable *all_settings); + gboolean nm_setting_populate_from_hash (NMSetting *setting, GHashTable *hash); -gboolean nm_settings_verify (GHashTable *all_settings); +gboolean nm_setting_verify (NMSetting *setting); GHashTable *nm_setting_to_hash (NMSetting *setting); gboolean nm_setting_update_secrets (NMSetting *setting, GHashTable *secrets); GPtrArray * nm_setting_need_secrets (NMSetting *setting);