static int route_send(void *req) { int ret = 0; struct module *route; struct msg_hdr resp; route = module_get_by_name("route"); if (route == NULL) { fastpath_log_error("route_send: get route module failed\n"); return -ENOENT; } ret = route->message(route, (struct msg_hdr *)req, &resp); return ret; }
void on_modules_cell_toggle_callback(GtkCellRenderer * cell, gchar * path, gpointer model) { GtkTreeIter iter; gboolean *on; gchar *name; MODULE_ENTRY *entry; GList *l; gtk_tree_model_get_iter_from_string(model, &iter, path); gtk_tree_model_get(model, &iter, COL_ENABLE, &on, COL_NAME, &name, -1); if (on) { entry = module_get_by_name(config->modules, name); GtkWidget *menubar; GtkWidget *toolbar; // reset menu for any existing window if (entry->functions) { l = config->windows; while (l) { menubar = interface_get_widget(GTK_WIDGET (l->data), "menubar_main"); if (menubar) if (entry->functions->menu_reset) entry->functions-> menu_reset((gpointer) menubar); toolbar = interface_get_widget(GTK_WIDGET (l->data), "toolbar_main"); if (toolbar) if (entry->functions-> toolbar_reset) entry->functions-> toolbar_reset((gpointer) toolbar); l = g_list_next(l); } // call session_open for all existing sessions if (entry->functions->session_close) { l = config->sessions; while (l) { entry->functions->session_close(l-> data); l = g_list_next(l); } } } if (module_unload(entry)) { gtk_list_store_set(model, &iter, COL_ENABLE, FALSE, -1); // change the menu } else { char *message; message = g_strdup_printf (" Module \"%s\" can't be unloaded !", name); interface_display_message(message); g_free(message); } } else { if (module_load ((entry = module_get_by_name(config->modules, name)))) { GtkWidget *menubar; GtkWidget *toolbar; if (entry->functions) { // modify menu for any existing window l = config->windows; while (l) { menubar = interface_get_widget(GTK_WIDGET (l->data), "menubar_main"); if (menubar) if (entry->functions-> menu_modify) entry->functions-> menu_modify((gpointer) menubar); toolbar = interface_get_widget(GTK_WIDGET (l->data), "toolbar_main"); if (toolbar) if (entry->functions-> toolbar_modify) entry->functions-> toolbar_modify((gpointer) toolbar); l = g_list_next(l); } // call session_open for all existing sessions if (entry->functions->session_open) { l = config->sessions; while (l) { entry->functions-> session_open(l->data); l = g_list_next(l); } } } gtk_list_store_set(model, &iter, COL_ENABLE, TRUE, -1); } else { char *message; message = g_strdup_printf (" Module \"%s\" can't be loaded !", name); interface_display_message(message); g_free(message); } } g_free(name); }