summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2013-09-25 12:54:53 -0400
committerDan Winship <danw@gnome.org>2013-09-27 09:34:34 -0400
commita598843c04dc7b33abf5528d7020854f66a70370 (patch)
tree767b7020b65fe31ee2410822a7f5d8abf18da599
parent0c9f514e9ce64ce2b38fd6385c9c7eae64b27637 (diff)
downloadnetwork-manager-applet-a598843c04dc7b33abf5528d7020854f66a70370.tar.gz
connection-editor: add bond "primary" option
-rw-r--r--src/connection-editor/ce-page-bond.ui84
-rw-r--r--src/connection-editor/page-bond.c39
2 files changed, 103 insertions, 20 deletions
diff --git a/src/connection-editor/ce-page-bond.ui b/src/connection-editor/ce-page-bond.ui
index 8632d333..c541ffba 100644
--- a/src/connection-editor/ce-page-bond.ui
+++ b/src/connection-editor/ce-page-bond.ui
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.15.4 on Wed Sep 25 12:38:16 2013 -->
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkAdjustment" id="bond_downdelay_adjustment">
@@ -73,8 +74,8 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">12</property>
- <property name="column_spacing">12</property>
<property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
<child>
<object class="GtkLabel" id="master_connections_label">
<property name="visible">True</property>
@@ -102,6 +103,8 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -119,6 +122,8 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -220,6 +225,7 @@
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">2</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -233,7 +239,9 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">5</property>
+ <property name="top_attach">6</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -271,7 +279,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">5</property>
+ <property name="top_attach">6</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -286,6 +296,8 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -297,6 +309,8 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -310,7 +324,9 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -327,7 +343,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -341,7 +359,9 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">8</property>
+ <property name="top_attach">9</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -353,7 +373,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">8</property>
+ <property name="top_attach">9</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -367,7 +389,9 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">6</property>
+ <property name="top_attach">7</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -381,7 +405,9 @@
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">7</property>
+ <property name="top_attach">8</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -394,7 +420,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
<property name="adjustment">bond_updelay_adjustment</property>
<property name="snap_to_ticks">True</property>
<property name="numeric">True</property>
@@ -421,7 +446,9 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">6</property>
+ <property name="top_attach">7</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
<child>
@@ -434,7 +461,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
- <property name="invisible_char_set">True</property>
<property name="adjustment">bond_downdelay_adjustment</property>
<property name="snap_to_ticks">True</property>
<property name="numeric">True</property>
@@ -461,7 +487,39 @@
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">7</property>
+ <property name="top_attach">8</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="bond_primary_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Primary:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">bond_primary</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="bond_primary">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip_text" translatable="yes">The interface name of the primary device. If set, this device will always be the active slave when it is available.</property>
+ <property name="invisible_char">●</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
</packing>
</child>
</object>
diff --git a/src/connection-editor/page-bond.c b/src/connection-editor/page-bond.c
index 5f09896d..cf6abc3d 100644
--- a/src/connection-editor/page-bond.c
+++ b/src/connection-editor/page-bond.c
@@ -46,6 +46,8 @@ typedef struct {
GtkWindow *toplevel;
GtkComboBox *mode;
+ GtkEntry *primary;
+ GtkWidget *primary_label;
GtkComboBox *monitoring;
GtkSpinButton *frequency;
GtkSpinButton *updelay;
@@ -78,6 +80,8 @@ bond_private_init (CEPageBond *self)
builder = CE_PAGE (self)->builder;
priv->mode = GTK_COMBO_BOX (gtk_builder_get_object (builder, "bond_mode"));
+ priv->primary = GTK_ENTRY (gtk_builder_get_object (builder, "bond_primary"));
+ priv->primary_label = GTK_WIDGET (gtk_builder_get_object (builder, "bond_primary_label"));
priv->monitoring = GTK_COMBO_BOX (gtk_builder_get_object (builder, "bond_monitoring"));
priv->frequency = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "bond_frequency"));
priv->updelay = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "bond_updelay"));
@@ -135,15 +139,24 @@ bonding_mode_changed (GtkComboBox *combo, gpointer user_data)
{
CEPageBond *self = user_data;
CEPageBondPrivate *priv = CE_PAGE_BOND_GET_PRIVATE (self);
+ int mode;
- /* balance-tlb and balance-alb work only with MII monitoring */
- if ( gtk_combo_box_get_active (combo) == MODE_BALANCE_TLB
- || gtk_combo_box_get_active (combo) == MODE_BALANCE_ALB) {
+ mode = gtk_combo_box_get_active (combo);
+
+ if (mode == MODE_BALANCE_TLB || mode == MODE_BALANCE_ALB) {
gtk_combo_box_set_active (priv->monitoring, MONITORING_MII);
gtk_widget_set_sensitive (GTK_WIDGET (priv->monitoring), FALSE);
} else {
gtk_widget_set_sensitive (GTK_WIDGET (priv->monitoring), TRUE);
}
+
+ if (mode == MODE_ACTIVE_BACKUP) {
+ gtk_widget_show (GTK_WIDGET (priv->primary));
+ gtk_widget_show (GTK_WIDGET (priv->primary_label));
+ } else {
+ gtk_widget_hide (GTK_WIDGET (priv->primary));
+ gtk_widget_hide (GTK_WIDGET (priv->primary_label));
+ }
}
static void
@@ -266,7 +279,7 @@ populate_ui (CEPageBond *self)
{
CEPageBondPrivate *priv = CE_PAGE_BOND_GET_PRIVATE (self);
NMSettingBond *setting = priv->setting;
- const char *mode, *frequency, *updelay, *downdelay, *raw_targets;
+ const char *mode, *primary, *frequency, *updelay, *downdelay, *raw_targets;
char *targets;
int mode_idx = MODE_BALANCE_RR;
@@ -294,6 +307,10 @@ populate_ui (CEPageBond *self)
self);
bonding_mode_changed (priv->mode, self);
+ /* Primary */
+ primary = nm_setting_bond_get_option_by_name (setting, NM_SETTING_BOND_OPTION_PRIMARY);
+ gtk_entry_set_text (priv->primary, primary ? primary : "");
+
/* Monitoring mode/frequency */
frequency = nm_setting_bond_get_option_by_name (setting, NM_SETTING_BOND_OPTION_ARP_INTERVAL);
if (frequency) {
@@ -384,6 +401,7 @@ finish_setup (CEPageBond *self, gpointer unused, GError *error, gpointer user_da
populate_ui (self);
g_signal_connect (priv->mode, "changed", G_CALLBACK (stuff_changed), self);
+ g_signal_connect (priv->primary, "changed", G_CALLBACK (stuff_changed), self);
g_signal_connect (priv->monitoring, "changed", G_CALLBACK (stuff_changed), self);
g_signal_connect (priv->frequency, "value-changed", G_CALLBACK (stuff_changed), self);
g_signal_connect (priv->updelay, "value-changed", G_CALLBACK (stuff_changed), self);
@@ -438,6 +456,7 @@ ui_to_setting (CEPageBond *self)
const char *frequency;
const char *updelay;
const char *downdelay;
+ const char *primary = NULL;
char *targets;
/* Mode */
@@ -447,6 +466,7 @@ ui_to_setting (CEPageBond *self)
break;
case MODE_ACTIVE_BACKUP:
mode = "active-backup";
+ primary = gtk_entry_get_text (priv->primary);
break;
case MODE_BALANCE_XOR:
mode = "balance-xor";
@@ -468,15 +488,20 @@ ui_to_setting (CEPageBond *self)
break;
}
+ /* Set bond mode and primary */
+ nm_setting_bond_add_option (priv->setting, NM_SETTING_BOND_OPTION_MODE, mode);
+
+ if (primary && *primary)
+ nm_setting_bond_add_option (priv->setting, NM_SETTING_BOND_OPTION_PRIMARY, primary);
+ else
+ nm_setting_bond_remove_option (priv->setting, NM_SETTING_BOND_OPTION_PRIMARY);
+
/* Monitoring mode/frequency */
frequency = gtk_entry_get_text (GTK_ENTRY (priv->frequency));
updelay = gtk_entry_get_text (GTK_ENTRY (priv->updelay));
downdelay = gtk_entry_get_text (GTK_ENTRY (priv->downdelay));
targets = uglify_targets (gtk_entry_get_text (priv->arp_targets));
- /* Set bond mode */
- nm_setting_bond_add_option (priv->setting, NM_SETTING_BOND_OPTION_MODE, mode);
-
switch (gtk_combo_box_get_active (priv->monitoring)) {
case MONITORING_MII:
nm_setting_bond_add_option (priv->setting, NM_SETTING_BOND_OPTION_MIIMON, frequency);