diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-01-06 19:14:27 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-01-14 19:04:15 +0100 |
commit | 9c3aa50cb857cd865714ac7ac85b95c84341f09c (patch) | |
tree | 5a9efccc9ba6c8c871d0bccbada554b665428b00 | |
parent | 89e1d45440bb043bb72cc4ede1eba769b92db336 (diff) | |
download | network-manager-applet-lr/bond-mtu-rh1177582.tar.gz |
editor: allow setting MTU for a bondlr/bond-mtu-rh1177582
MTU is the 802-3-ethernet.mtu key, make sure wired setting exists.
https://bugzilla.redhat.com/show_bug.cgi?id=1177582
-rw-r--r-- | src/connection-editor/ce-page-bond.ui | 60 | ||||
-rw-r--r-- | src/connection-editor/page-bond.c | 29 |
2 files changed, 89 insertions, 0 deletions
diff --git a/src/connection-editor/ce-page-bond.ui b/src/connection-editor/ce-page-bond.ui index c541ffba..1ef13b31 100644 --- a/src/connection-editor/ce-page-bond.ui +++ b/src/connection-editor/ce-page-bond.ui @@ -2,6 +2,11 @@ <!-- 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_mtu_adjustment"> + <property name="upper">10000</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> <object class="GtkAdjustment" id="bond_downdelay_adjustment"> <property name="upper">10000</property> <property name="step_increment">100</property> @@ -522,5 +527,60 @@ <property name="height">1</property> </packing> </child> + <child> + <object class="GtkLabel" id="bond_mtu_label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_MTU:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">bond_mtu</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">9</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="bond_mtu_box"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">4</property> + <child> + <object class="GtkSpinButton" id="bond_mtu"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="adjustment">bond_mtu_adjustment</property> + <property name="climb_rate">1</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label29"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">bytes</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">9</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> </object> </interface> diff --git a/src/connection-editor/page-bond.c b/src/connection-editor/page-bond.c index d05b0b70..b2bf9143 100644 --- a/src/connection-editor/page-bond.c +++ b/src/connection-editor/page-bond.c @@ -39,6 +39,7 @@ G_DEFINE_TYPE (CEPageBond, ce_page_bond, CE_TYPE_PAGE_MASTER) typedef struct { NMSettingBond *setting; + NMSettingWired *wired; int slave_arptype; @@ -57,6 +58,7 @@ typedef struct { GtkWidget *downdelay_box; GtkEntry *arp_targets; GtkWidget *arp_targets_label; + GtkSpinButton *mtu; } CEPageBondPrivate; #define MODE_BALANCE_RR 0 @@ -91,6 +93,7 @@ bond_private_init (CEPageBond *self) priv->downdelay_box = GTK_WIDGET (gtk_builder_get_object (builder, "bond_downdelay_box")); priv->arp_targets = GTK_ENTRY (gtk_builder_get_object (builder, "bond_arp_targets")); priv->arp_targets_label = GTK_WIDGET (gtk_builder_get_object (builder, "bond_arp_targets_label")); + priv->mtu = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "bond_mtu")); priv->toplevel = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (priv->mode), GTK_TYPE_WINDOW)); @@ -276,6 +279,7 @@ populate_ui (CEPageBond *self) const char *mode, *primary, *frequency, *updelay, *downdelay, *raw_targets; char *targets; int mode_idx = MODE_BALANCE_RR; + guint32 mtu_def, mtu_val; /* Mode */ mode = nm_setting_bond_get_option_by_name (setting, NM_SETTING_BOND_OPTION_MODE); @@ -350,6 +354,18 @@ populate_ui (CEPageBond *self) gtk_entry_set_text (priv->arp_targets, targets); g_free (targets); } + + /* MTU */ + if (priv->wired) { + mtu_def = ce_get_property_default (NM_SETTING (priv->wired), NM_SETTING_WIRED_MTU); + mtu_val = nm_setting_wired_get_mtu (priv->wired); + } else { + mtu_def = mtu_val = 0; + } + g_signal_connect (priv->mtu, "output", + G_CALLBACK (ce_spin_output_with_automatic), + GINT_TO_POINTER (mtu_def)); + gtk_spin_button_set_value (priv->mtu, (gdouble) mtu_val); } static gboolean @@ -410,6 +426,7 @@ finish_setup (CEPageBond *self, gpointer unused, GError *error, gpointer user_da g_signal_connect (priv->updelay, "value-changed", G_CALLBACK (stuff_changed), self); g_signal_connect (priv->downdelay, "value-changed", G_CALLBACK (stuff_changed), self); g_signal_connect (priv->arp_targets, "changed", G_CALLBACK (stuff_changed), self); + g_signal_connect (priv->mtu, "value-changed", G_CALLBACK (stuff_changed), self); } CEPage * @@ -445,6 +462,7 @@ ce_page_bond_new (NMConnection *connection, priv->setting = NM_SETTING_BOND (nm_setting_bond_new ()); nm_connection_add_setting (connection, NM_SETTING (priv->setting)); } + priv->wired = nm_connection_get_setting_wired (connection); g_signal_connect (self, "initialized", G_CALLBACK (finish_setup), NULL); @@ -455,12 +473,14 @@ static void ui_to_setting (CEPageBond *self) { CEPageBondPrivate *priv = CE_PAGE_BOND_GET_PRIVATE (self); + NMConnection *connection = CE_PAGE (self)->connection; const char *mode; const char *frequency; const char *updelay; const char *downdelay; const char *primary = NULL; char *targets; + guint32 mtu; /* Mode */ switch (gtk_combo_box_get_active (priv->mode)) { @@ -529,6 +549,15 @@ ui_to_setting (CEPageBond *self) } g_free (targets); + + mtu = gtk_spin_button_get_value_as_int (priv->mtu); + if (mtu) { + if (!priv->wired) { + priv->wired = NM_SETTING_WIRED (nm_setting_wired_new ()); + nm_connection_add_setting (connection, NM_SETTING (priv->wired)); + } + g_object_set (priv->wired, NM_SETTING_WIRED_MTU, mtu, NULL); + } } static gboolean |