summaryrefslogtreecommitdiff
path: root/libnm-util/nm-setting.c
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-02-11 09:53:35 -0500
committerDan Winship <danw@gnome.org>2014-03-06 09:37:20 -0500
commit4a5e2ced0854acc9008cdbd5322d61c30acee6b3 (patch)
tree1a76948f9a442afe1da3e67a04240df6e0f47933 /libnm-util/nm-setting.c
parenta9c8addc91e7b8487bd450e7d5ea7c31a5220427 (diff)
downloadNetworkManager-4a5e2ced0854acc9008cdbd5322d61c30acee6b3.tar.gz
libnm-util: add nm_utils_check_virtual_device_compatibility()
Add a function encoding the logic of what virtual types support what slave/parent types, so clients don't need to encode it themselves.
Diffstat (limited to 'libnm-util/nm-setting.c')
-rw-r--r--libnm-util/nm-setting.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/libnm-util/nm-setting.c b/libnm-util/nm-setting.c
index f19ef6a7b2..9407c63cce 100644
--- a/libnm-util/nm-setting.c
+++ b/libnm-util/nm-setting.c
@@ -199,25 +199,31 @@ _nm_setting_lookup_setting_by_type (GType type)
}
static guint32
-_get_setting_priority (NMSetting *setting)
+_get_setting_type_priority (GType type)
{
- NMSettingPrivate *priv;
+ const SettingInfo *info;
- g_return_val_if_fail (NM_IS_SETTING (setting), G_MAXUINT32);
- priv = NM_SETTING_GET_PRIVATE (setting);
- _ensure_setting_info (setting, priv);
- return priv->info->priority;
+ g_return_val_if_fail (g_type_is_a (type, NM_TYPE_SETTING), G_MAXUINT32);
+
+ info = _nm_setting_lookup_setting_by_type (type);
+ return info->priority;
}
gboolean
-_nm_setting_is_base_type (NMSetting *setting)
+_nm_setting_type_is_base_type (GType type)
{
/* Historical oddity: PPPoE is a base-type even though it's not
* priority 1. It needs to be sorted *after* lower-level stuff like
* WiFi security or 802.1x for secrets, but it's still allowed as a
* base type.
*/
- return _get_setting_priority (setting) == 1 || NM_IS_SETTING_PPPOE (setting);
+ return _get_setting_type_priority (type) == 1 || (type == NM_TYPE_SETTING_PPPOE);
+}
+
+gboolean
+_nm_setting_is_base_type (NMSetting *setting)
+{
+ return _nm_setting_type_is_base_type (G_OBJECT_TYPE (setting));
}
GType
@@ -254,8 +260,8 @@ _nm_setting_compare_priority (gconstpointer a, gconstpointer b)
{
guint32 prio_a, prio_b;
- prio_a = _get_setting_priority (NM_SETTING (a));
- prio_b = _get_setting_priority (NM_SETTING (b));
+ prio_a = _get_setting_type_priority (G_OBJECT_TYPE (a));
+ prio_b = _get_setting_type_priority (G_OBJECT_TYPE (b));
if (prio_a < prio_b)
return -1;