cli: add Bond device support

This commit is contained in:
Jiří Klimeš
2012-03-06 11:31:03 +01:00
parent 723bab41ea
commit 78f09078f1
2 changed files with 46 additions and 1 deletions

View File

@@ -41,6 +41,7 @@
#include <nm-device-bt.h>
#include <nm-device-olpc-mesh.h>
#include <nm-device-infiniband.h>
#include <nm-device-bond.h>
#include <nm-remote-settings.h>
#include <nm-vpn-connection.h>
#include <nm-utils.h>
@@ -1466,6 +1467,44 @@ check_infiniband_compatible (NMDeviceInfiniband *device, NMConnection *connectio
return TRUE;
}
static gboolean
check_bond_compatible (NMDeviceBond *device, NMConnection *connection, GError **error)
{
NMSettingConnection *s_con;
NMSettingBond *s_bond;
const char *connection_type;
const char *dev_iface_name, *bond_iface_name;
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
s_con = nm_connection_get_setting_connection (connection);
g_assert (s_con);
connection_type = nm_setting_connection_get_connection_type (s_con);
if (strcmp (connection_type, NM_SETTING_BOND_SETTING_NAME)) {
g_set_error (error, 0, 0,
"The connection was not an Bond connection.");
return FALSE;
}
s_bond = nm_connection_get_setting_bond (connection);
if (!s_bond) {
g_set_error (error, 0, 0,
"The connection was not a valid Bond connection.");
return FALSE;
}
dev_iface_name = nm_device_get_iface (NM_DEVICE (device));
bond_iface_name = nm_setting_bond_get_interface_name (s_bond);
if (g_strcmp0 (dev_iface_name, bond_iface_name) != 0) {
g_set_error (error, 0, 0,
"The connection's and device's interface names did not match.");
return FALSE;
}
return TRUE;
}
static gboolean
nm_device_is_connection_compatible (NMDevice *device, NMConnection *connection, GError **error)
{
@@ -1488,6 +1527,8 @@ nm_device_is_connection_compatible (NMDevice *device, NMConnection *connection,
return check_modem_compatible (NM_DEVICE_MODEM (device), connection, error);
else if (NM_IS_DEVICE_INFINIBAND (device))
return check_infiniband_compatible (NM_DEVICE_INFINIBAND (device), connection, error);
else if (NM_IS_DEVICE_BOND (device))
return check_bond_compatible (NM_DEVICE_BOND (device), connection, error);
g_set_error (error, 0, 0, "unhandled device type '%s'", G_OBJECT_TYPE_NAME (device));
return FALSE;