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; }
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); } }