diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2016-03-11 13:17:24 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2016-04-18 21:50:51 +0200 |
commit | 82f8a54854f65d2bf648329d1d9b411de04959cb (patch) | |
tree | 652828cbd158058fd4b67593f3ba06533e0ba2f2 /libnm-core/nm-setting-team-port.c | |
parent | 28274495d61cb434272e0e2307dfd824ee78de8e (diff) | |
download | NetworkManager-82f8a54854f65d2bf648329d1d9b411de04959cb.tar.gz |
libnm-core: use jansson to compare and check team configurations
Optionally link libnm-core against jansson JSON library and use it to
validate and compare team configurations.
Diffstat (limited to 'libnm-core/nm-setting-team-port.c')
-rw-r--r-- | libnm-core/nm-setting-team-port.c | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/libnm-core/nm-setting-team-port.c b/libnm-core/nm-setting-team-port.c index 9671f1d915..d9a444fe45 100644 --- a/libnm-core/nm-setting-team-port.c +++ b/libnm-core/nm-setting-team-port.c @@ -85,6 +85,18 @@ nm_setting_team_port_get_config (NMSettingTeamPort *setting) static gboolean verify (NMSetting *setting, NMConnection *connection, GError **error) { + NMSettingTeamPortPrivate *priv = NM_SETTING_TEAM_PORT_GET_PRIVATE (setting); + + if (priv->config) { + if (!_nm_utils_check_valid_json (priv->config, error)) { + g_prefix_error (error, + "%s.%s: ", + NM_SETTING_TEAM_PORT_SETTING_NAME, + NM_SETTING_TEAM_PORT_CONFIG); + return FALSE; + } + } + if (connection) { NMSettingConnection *s_con; const char *slave_type; @@ -116,6 +128,25 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) return TRUE; } +static gboolean +compare_property (NMSetting *setting, + NMSetting *other, + const GParamSpec *prop_spec, + NMSettingCompareFlags flags) +{ + NMSettingClass *parent_class; + + if (nm_streq0 (prop_spec->name, NM_SETTING_TEAM_PORT_CONFIG)) { + return _nm_utils_team_config_equal (NM_SETTING_TEAM_PORT_GET_PRIVATE (setting)->config, + NM_SETTING_TEAM_PORT_GET_PRIVATE (other)->config, + TRUE); + } + + /* Otherwise chain up to parent to handle generic compare */ + parent_class = NM_SETTING_CLASS (nm_setting_team_port_parent_class); + return parent_class->compare_property (setting, other, prop_spec, flags); +} + static void nm_setting_team_port_init (NMSettingTeamPort *setting) { @@ -173,10 +204,11 @@ nm_setting_team_port_class_init (NMSettingTeamPortClass *setting_class) g_type_class_add_private (setting_class, sizeof (NMSettingTeamPortPrivate)); /* virtual methods */ - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->finalize = finalize; - parent_class->verify = verify; + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->finalize = finalize; + parent_class->compare_property = compare_property; + parent_class->verify = verify; /* Properties */ /** |