On Fri, 2011-09-23 at 14:52 +0200, Thomas Graf wrote: > Adds a MASTER= directive to ifcfg-rh permitting a connection to define > a master/slave relationship. This is intended to be used to implement > bonding and eventually bridging connections.
What are the allowed values again? Obviously a UUID, but were you also thinking of device names too? (ie whatever goes into the bond setting's 'device-name' property?) Dan > Signed-off-by: Thomas Graf <tg...@redhat.com> > --- > libnm-util/libnm-util.ver | 1 + > libnm-util/nm-setting-connection.c | 39 > ++++++++++++++++++++++++++++++++ > libnm-util/nm-setting-connection.h | 2 + > src/settings/plugins/ifcfg-rh/reader.c | 6 +++++ > 4 files changed, 48 insertions(+), 0 deletions(-) > > diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver > index 8c28edf..0c7aab0 100644 > --- a/libnm-util/libnm-util.ver > +++ b/libnm-util/libnm-util.ver > @@ -195,6 +195,7 @@ global: > nm_setting_connection_get_connection_type; > nm_setting_connection_get_id; > nm_setting_connection_get_num_permissions; > + nm_setting_connection_get_master; > nm_setting_connection_get_permission; > nm_setting_connection_get_read_only; > nm_setting_connection_get_timestamp; > diff --git a/libnm-util/nm-setting-connection.c > b/libnm-util/nm-setting-connection.c > index e9030b1..5ca6b60 100644 > --- a/libnm-util/nm-setting-connection.c > +++ b/libnm-util/nm-setting-connection.c > @@ -97,6 +97,7 @@ typedef struct { > char *id; > char *uuid; > char *type; > + char *master; > GSList *permissions; /* list of Permission structs */ > gboolean autoconnect; > guint64 timestamp; > @@ -112,6 +113,7 @@ enum { > PROP_AUTOCONNECT, > PROP_TIMESTAMP, > PROP_READ_ONLY, > + PROP_MASTER, > > LAST_PROP > }; > @@ -478,6 +480,22 @@ nm_setting_connection_get_read_only (NMSettingConnection > *setting) > return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->read_only; > } > > +/** > + * nm_setting_connection_get_master: > + * @setting: the #NMSettingConnection > + * > + * Returns the #NMSettingConnection:master property of the connection. > + * > + * Returns: Name of the master device > + */ > +const char * > +nm_setting_connection_get_master (NMSettingConnection *setting) > +{ > + g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL); > + > + return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->master; > +} > + > static gint > find_setting_by_name (gconstpointer a, gconstpointer b) > { > @@ -591,6 +609,7 @@ finalize (GObject *object) > g_free (priv->id); > g_free (priv->uuid); > g_free (priv->type); > + g_free (priv->master); > nm_utils_slist_free (priv->permissions, (GDestroyNotify) > permission_free); > > G_OBJECT_CLASS (nm_setting_connection_parent_class)->finalize (object); > @@ -644,6 +663,10 @@ set_property (GObject *object, guint prop_id, > case PROP_READ_ONLY: > priv->read_only = g_value_get_boolean (value); > break; > + case PROP_MASTER: > + g_free (priv->master); > + priv->master = g_value_dup_string (value); > + break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); > break; > @@ -689,6 +712,9 @@ get_property (GObject *object, guint prop_id, > case PROP_READ_ONLY: > g_value_set_boolean (value, nm_setting_connection_get_read_only > (setting)); > break; > + case PROP_MASTER: > + g_value_set_string (value, nm_setting_connection_get_master > (setting)); > + break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); > break; > @@ -876,4 +902,17 @@ nm_setting_connection_class_init > (NMSettingConnectionClass *setting_class) > "cannot yet write updated connections back out.", > FALSE, > G_PARAM_READWRITE | G_PARAM_CONSTRUCT | > NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); > + > + /** > + * NMSettingConnection:master: > + * > + * Name of the master deviec or UUID of the master connection > + **/ > + g_object_class_install_property > + (object_class, PROP_MASTER, > + g_param_spec_string (NM_SETTING_CONNECTION_MASTER, > + "Master", > + "Name of the master device or > UUID of the master connection", > + NULL, > + G_PARAM_READWRITE | > NM_SETTING_PARAM_SERIALIZE | NM_SETTING_PARAM_FUZZY_IGNORE)); > } > diff --git a/libnm-util/nm-setting-connection.h > b/libnm-util/nm-setting-connection.h > index 1ec5bf1..0768bd6 100644 > --- a/libnm-util/nm-setting-connection.h > +++ b/libnm-util/nm-setting-connection.h > @@ -75,6 +75,7 @@ GQuark nm_setting_connection_error_quark (void); > #define NM_SETTING_CONNECTION_TIMESTAMP "timestamp" > #define NM_SETTING_CONNECTION_READ_ONLY "read-only" > #define NM_SETTING_CONNECTION_PERMISSIONS "permissions" > +#define NM_SETTING_CONNECTION_MASTER "master" > > /** > * NMSettingConnection: > @@ -119,6 +120,7 @@ gboolean nm_setting_connection_add_permission > (NMSettingConnection *set > const char *detail); > void nm_setting_connection_remove_permission (NMSettingConnection > *setting, > guint32 idx); > +const char *nm_setting_connection_get_master (NMSettingConnection > *setting); > > G_END_DECLS > > diff --git a/src/settings/plugins/ifcfg-rh/reader.c > b/src/settings/plugins/ifcfg-rh/reader.c > index f20b6cc..1b12069 100644 > --- a/src/settings/plugins/ifcfg-rh/reader.c > +++ b/src/settings/plugins/ifcfg-rh/reader.c > @@ -139,6 +139,12 @@ make_connection_setting (const char *file, > svTrueValue (ifcfg, "ONBOOT", TRUE), > NULL); > > + value = svGetValue (ifcfg, "MASTER", FALSE); > + if (value) { > + g_object_set (s_con, NM_SETTING_CONNECTION_MASTER, value, NULL); > + g_free (value); > + } > + > value = svGetValue (ifcfg, "USERS", FALSE); > if (value) { > char **items, **iter; _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org http://mail.gnome.org/mailman/listinfo/networkmanager-list