diff options
Diffstat (limited to 'libnm-core/nm-setting-ovs-interface.c')
-rw-r--r-- | libnm-core/nm-setting-ovs-interface.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libnm-core/nm-setting-ovs-interface.c b/libnm-core/nm-setting-ovs-interface.c index b9e749ba96..3b214af892 100644 --- a/libnm-core/nm-setting-ovs-interface.c +++ b/libnm-core/nm-setting-ovs-interface.c @@ -85,6 +85,7 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) if (connection) { NMSettingConnection *s_con; + const char *slave_type; s_con = nm_connection_get_setting_connection (connection); if (!s_con) { @@ -105,6 +106,20 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_MASTER); return FALSE; } + + slave_type = nm_setting_connection_get_slave_type (s_con); + if ( slave_type + && strcmp (slave_type, NM_SETTING_OVS_PORT_SETTING_NAME)) { + g_set_error (error, + NM_CONNECTION_ERROR, + NM_CONNECTION_ERROR_INVALID_PROPERTY, + _("A connection with a '%s' setting must have the slave-type set to '%s'. Instead it is '%s'"), + NM_SETTING_OVS_INTERFACE_SETTING_NAME, + NM_SETTING_OVS_PORT_SETTING_NAME, + slave_type); + g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE); + return FALSE; + } } if (!NM_IN_STRSET (self->type, "internal", "system", "patch", "", NULL)) { |