diff options
| author | Sjoerd Simons <sjoerd@luon.net> | 2013-10-25 21:21:07 +0200 |
|---|---|---|
| committer | Sjoerd Simons <sjoerd@luon.net> | 2013-10-25 21:21:07 +0200 |
| commit | e83d1de9b746dbc078ac1cf45f1798e1bc6b7e2f (patch) | |
| tree | c36a40d79a5ae7d2bbca7d240d0a6f664049b435 /libnm-util/nm-setting-ip4-config.c | |
| parent | 26283b4c9e5035574a6c168003e7f1da53a8f32a (diff) | |
| parent | a4256940da049f91bbbea5e53e469a59ea9c10f7 (diff) | |
Merge tag 'upstream/0.9.8.8' into experimental
Upstream version 0.9.8.8
Diffstat (limited to 'libnm-util/nm-setting-ip4-config.c')
| -rw-r--r-- | libnm-util/nm-setting-ip4-config.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libnm-util/nm-setting-ip4-config.c b/libnm-util/nm-setting-ip4-config.c index c6becefb..90534c12 100644 --- a/libnm-util/nm-setting-ip4-config.c +++ b/libnm-util/nm-setting-ip4-config.c @@ -678,6 +678,15 @@ nm_setting_ip4_config_get_may_fail (NMSettingIP4Config *setting) return NM_SETTING_IP4_CONFIG_GET_PRIVATE (setting)->may_fail; } +static gint +find_setting_by_name (gconstpointer a, gconstpointer b) +{ + NMSetting *setting = NM_SETTING (a); + const char *str = (const char *) b; + + return strcmp (nm_setting_get_name (setting), str); +} + static gboolean verify (NMSetting *setting, GSList *all_settings, GError **error) { @@ -737,6 +746,22 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } + /* Disabled method is not allowed when IPv6 is set to 'ignore' */ + if (!strcmp (priv->method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED)) { + GSList *list = g_slist_find_custom (all_settings, NM_SETTING_IP6_CONFIG_SETTING_NAME, find_setting_by_name); + if (list) { + NMSettingIP6Config *s_ip6 = g_slist_nth_data (list, 0); + if ( s_ip6 + && !g_strcmp0 (nm_setting_ip6_config_get_method (s_ip6), NM_SETTING_IP6_CONFIG_METHOD_IGNORE)) { + g_set_error (error, + NM_SETTING_IP4_CONFIG_ERROR, + NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY, + NM_SETTING_IP4_CONFIG_METHOD); + return FALSE; + } + } + } + if (priv->dhcp_client_id && !strlen (priv->dhcp_client_id)) { g_set_error (error, NM_SETTING_IP4_CONFIG_ERROR, @@ -818,6 +843,8 @@ finalize (GObject *object) NMSettingIP4ConfigPrivate *priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE (self); g_free (priv->method); + g_free (priv->dhcp_hostname); + g_free (priv->dhcp_client_id); g_array_free (priv->dns, TRUE); |