summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-08-31 10:51:48 +0200
committerJiří Klimeš <jklimes@redhat.com>2015-08-31 11:01:09 +0200
commitd695af2d9ea6fc6d33f9c7cd083805896bc739e5 (patch)
tree815e84e3e9166b4b0150b7a1aff8e478741aaad3
parenta317477d699a295530dd384b952a698fbfb0f820 (diff)
downloadnetwork-manager-applet-jk/editor-vlan-flags.tar.gz
editor: allow editing VLAN flagsjk/editor-vlan-flags
-rw-r--r--src/connection-editor/ce-page-vlan.ui75
-rw-r--r--src/connection-editor/page-vlan.c24
2 files changed, 98 insertions, 1 deletions
diff --git a/src/connection-editor/ce-page-vlan.ui b/src/connection-editor/ce-page-vlan.ui
index 2ea15e28..95427166 100644
--- a/src/connection-editor/ce-page-vlan.ui
+++ b/src/connection-editor/ce-page-vlan.ui
@@ -15,7 +15,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">12</property>
- <property name="n_rows">5</property>
+ <property name="n_rows">6</property>
<property name="n_columns">2</property>
<property name="column_spacing">12</property>
<property name="row_spacing">6</property>
@@ -199,6 +199,79 @@
<property name="y_options">GTK_FILL</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="vlan_flags_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Flags:</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">immediate</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkCheckButton" id="reorder_hdr_flag">
+ <property name="label" translatable="yes">_Reorder headers</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="gvrp_flag">
+ <property name="label" translatable="yes">_GVRP</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="loose_binding_flag">
+ <property name="label" translatable="yes">_Loose binding</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
</object>
<object class="GtkListStore" id="vlan_name_type_model">
<columns>
diff --git a/src/connection-editor/page-vlan.c b/src/connection-editor/page-vlan.c
index b7d6364f..9a0cc86c 100644
--- a/src/connection-editor/page-vlan.c
+++ b/src/connection-editor/page-vlan.c
@@ -57,6 +57,7 @@ typedef struct {
GtkEntry *name_entry;
GtkEntry *cloned_mac;
GtkSpinButton *mtu;
+ GtkToggleButton *flag_reorder_hdr, *flag_gvrp, *flag_loose_binding;
char *last_parent;
int last_id;
@@ -88,6 +89,9 @@ vlan_private_init (CEPageVlan *self)
priv->name_entry = GTK_ENTRY (gtk_builder_get_object (builder, "vlan_name_entry"));
priv->cloned_mac = GTK_ENTRY (gtk_builder_get_object (builder, "vlan_cloned_mac_entry"));
priv->mtu = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "vlan_mtu"));
+ priv->flag_reorder_hdr = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "reorder_hdr_flag"));
+ priv->flag_gvrp = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "gvrp_flag"));
+ priv->flag_loose_binding = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "loose_binding_flag"));
priv->toplevel = GTK_WINDOW (gtk_widget_get_ancestor (GTK_WIDGET (priv->mtu),
GTK_TYPE_WINDOW));
@@ -444,6 +448,7 @@ populate_ui (CEPageVlan *self)
NMDevice *device, *parent_device = NULL;
const char *parent, *iface, *current_parent;
int i, mtu_def, mtu_val;
+ guint32 flags;
devices = get_vlan_devices (self);
@@ -544,6 +549,15 @@ populate_ui (CEPageVlan *self)
gtk_spin_button_set_value (priv->mtu, (gdouble) mtu_val);
g_signal_connect (priv->mtu, "value-changed", G_CALLBACK (stuff_changed), self);
+ /* Flags */
+ flags = nm_setting_vlan_get_flags (priv->setting);
+ if (flags & NM_VLAN_FLAG_REORDER_HEADERS)
+ gtk_toggle_button_set_active (priv->flag_reorder_hdr, TRUE);
+ if (flags & NM_VLAN_FLAG_GVRP)
+ gtk_toggle_button_set_active (priv->flag_gvrp, TRUE);
+ if (flags & NM_VLAN_FLAG_LOOSE_BINDING)
+ gtk_toggle_button_set_active (priv->flag_loose_binding, TRUE);
+
g_slist_free (devices);
}
@@ -609,6 +623,7 @@ ui_to_setting (CEPageVlan *self)
GType hwtype;
gboolean mtu_set;
int mtu;
+ guint32 flags = 0;
active_id = gtk_combo_box_get_active (GTK_COMBO_BOX (priv->parent));
parent_id = get_parents_index (priv->parents_len, GTK_COMBO_BOX (priv->parent), active_id);
@@ -656,10 +671,19 @@ ui_to_setting (CEPageVlan *self)
iface = gtk_entry_get_text (priv->name_entry);
vid = gtk_spin_button_get_value_as_int (priv->id_entry);
+ /* Flags */
+ if (gtk_toggle_button_get_active (priv->flag_reorder_hdr))
+ flags |= NM_VLAN_FLAG_REORDER_HEADERS;
+ if (gtk_toggle_button_get_active (priv->flag_gvrp))
+ flags |= NM_VLAN_FLAG_GVRP;
+ if (gtk_toggle_button_get_active (priv->flag_loose_binding))
+ flags |= NM_VLAN_FLAG_LOOSE_BINDING;
+
g_object_set (s_con, NM_SETTING_CONNECTION_INTERFACE_NAME, *iface ? iface : NULL, NULL);
g_object_set (priv->setting,
NM_SETTING_VLAN_PARENT, parent_uuid ? parent_uuid : parent_iface,
NM_SETTING_VLAN_ID, vid,
+ NM_SETTING_VLAN_FLAGS, flags,
NULL);
if (hwtype != G_TYPE_NONE) {