Exemplo n.º 1
0
gboolean
_fcoe_setup (const char *iface,
             NMSettingDcb *s_dcb,
             DcbFunc run_func,
             gpointer user_data,
             GError **error)
{
	NMSettingDcbFlags flags;

	g_assert (s_dcb);

	flags = nm_setting_dcb_get_app_fcoe_flags (s_dcb);
	if (flags & NM_SETTING_DCB_FLAG_ENABLE) {
		const char *mode = nm_setting_dcb_get_app_fcoe_mode (s_dcb);

		if (!do_helper (NULL, FCOEADM, run_func, user_data, error, "-m %s -c %s", mode, iface))
			return FALSE;
	} else {
		if (!do_helper (NULL, FCOEADM, run_func, user_data, error, "-d %s", iface))
			return FALSE;
	}

	return TRUE;
}
Exemplo n.º 2
0
static void
feature_setup (CEPageDcb *self, NMSettingDcb *s_dcb, const Feature *f)
{
	CEPage *parent = CE_PAGE (self);
	GtkWidget *widget;
	NMSettingDcbFlags flags = NM_SETTING_DCB_FLAG_NONE;
	gboolean enabled;
	EnableInfo *info;

	if (s_dcb)
		g_object_get (G_OBJECT (s_dcb), f->flags_prop, (guint32 *) &flags, NULL);
	enabled = flags & NM_SETTING_DCB_FLAG_ENABLE;

	/* Enable */
	widget = get_widget (parent->builder, f->prefix, "_enable_checkbutton");
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), enabled);

	info = g_malloc0 (sizeof (EnableInfo));
	info->f = f;
	info->page = parent;
	g_signal_connect_data (widget, "toggled", G_CALLBACK (enable_toggled_cb), info, free_enable_info, 0);

	/* Advertise */
	widget = get_widget (parent->builder, f->prefix, "_advertise_checkbutton");
	gtk_widget_set_sensitive (widget, enabled);
	if (enabled)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), flags & NM_SETTING_DCB_FLAG_ADVERTISE);
	g_signal_connect_swapped (widget, "toggled", G_CALLBACK (ce_page_changed), self);

	/* Willing */
	widget = get_widget (parent->builder, f->prefix, "_willing_checkbutton");
	gtk_widget_set_sensitive (widget, enabled);
	if (enabled)
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), flags & NM_SETTING_DCB_FLAG_WILLING);
	g_signal_connect_swapped (widget, "toggled", G_CALLBACK (ce_page_changed), self);

	if (f->priority_prop) {
		gint priority = -1;

		if (s_dcb)
			g_object_get (G_OBJECT (s_dcb), f->priority_prop, &priority, NULL);
		priority = CLAMP (priority, -1, 7);

		widget = get_widget (parent->builder, f->prefix, "_priority_combo");
		gtk_widget_set_sensitive (widget, enabled);
		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), priority + 1);
		g_signal_connect_swapped (widget, "changed", G_CALLBACK (ce_page_changed), self);
	}

	if (f->options_func) {
		widget = get_widget (parent->builder, f->prefix, "_options_button");
		gtk_widget_set_sensitive (widget, enabled);
		g_signal_connect_swapped (widget, "clicked", G_CALLBACK (f->options_func), self);
	}

	/* Set up the FCoE mode combo */
	if (!strcmp (f->prefix, "fcoe")) {
		const char *mode = s_dcb ? nm_setting_dcb_get_app_fcoe_mode (s_dcb) : NULL;
		guint idx = 0;

		widget = get_widget (info->page->builder, info->f->prefix, "_mode_combo");
		if (g_strcmp0 (mode, NM_SETTING_DCB_FCOE_MODE_VN2VN) == 0)
			idx = 1;
		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), idx);
		gtk_widget_set_sensitive (widget, enabled);
		g_signal_connect_swapped (widget, "changed", G_CALLBACK (ce_page_changed), self);
	}
}