+#ifdef SILC_DEBUG
+ /* Dump internal flags */
+ fprintf(fdd, "\nDumping internal flags\n");
+ fprintf(fdd, " server_type : %d\n", silcd->server_type);
+ fprintf(fdd, " standalone : %d\n", silcd->standalone);
+ fprintf(fdd, " listenning : %d\n", silcd->listenning);
+ fprintf(fdd, " background : %d\n", silcd->background);
+ fprintf(fdd, " backup_router : %d\n", silcd->backup_router);
+ fprintf(fdd, " backup_primary : %d\n", silcd->backup_primary);
+ fprintf(fdd, " backup_noswitch : %d\n", silcd->backup_noswitch);
+ fprintf(fdd, " backup_closed : %d\n", silcd->backup_closed);
+ fprintf(fdd, " wait_backup : %d\n", silcd->wait_backup);
+ if (silcd->router)
+ fprintf(fdd, " primary router : %s\n",
+ silcd->router->server_name ? silcd->router->server_name : "");
+
+ /* Dump socket connections */
+ {
+ int i;
+ SilcSocketConnection s;
+
+ fprintf(fdd, "\nDumping socket connections\n");
+ for (i = 0; i < silcd->config->param.connections_max; i++) {
+ s = silcd->sockets[i];
+ if (!s)
+ continue;
+ fprintf(fdd, " %d: host %s ip %s port %d type %d flags 0x%x\n",
+ s->sock, s->hostname ? s->hostname : "N/A",
+ s->ip ? s->ip : "N/A", s->port, s->type,
+ (unsigned int)s->flags);
+ }
+ }
+
+ /* Dump lists */
+ {
+ SilcIDCacheList list = NULL;
+ SilcIDCacheEntry id_cache = NULL;
+ SilcServerEntry server_entry;
+ SilcClientEntry client_entry;
+ SilcChannelEntry channel_entry;
+ int c;
+
+ fprintf(fdd, "\nDumping databases\n");
+
+ if (silc_idcache_get_all(silcd->local_list->servers, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nServers in local-list:\n");
+ c = 1;
+ while (id_cache) {
+ server_entry = (SilcServerEntry)id_cache->context;
+ fprintf(fdd, " %d: name %s id %s status 0x%x\n", c,
+ server_entry->server_name ? server_entry->server_name :
+ "N/A", server_entry->id ?
+ silc_id_render(server_entry->id, SILC_ID_SERVER) : "N/A",
+ server_entry->data.status);
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ if (silc_idcache_get_all(silcd->global_list->servers, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nServers in global-list:\n");
+ c = 1;
+ while (id_cache) {
+ server_entry = (SilcServerEntry)id_cache->context;
+ fprintf(fdd, " %d: name %s id %s status 0x%x\n", c,
+ server_entry->server_name ? server_entry->server_name :
+ "N/A", server_entry->id ?
+ silc_id_render(server_entry->id, SILC_ID_SERVER) : "N/A",
+ server_entry->data.status);
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ if (silc_idcache_get_all(silcd->local_list->clients, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nClients in local-list:\n");
+ c = 1;
+ while (id_cache) {
+ client_entry = (SilcClientEntry)id_cache->context;
+ server_entry = client_entry->router;
+ fprintf(fdd, " %d: name %s id %s status 0x%x from %s\n", c,
+ client_entry->nickname ? client_entry->nickname :
+ (unsigned char *)"N/A", client_entry->id ?
+ silc_id_render(client_entry->id, SILC_ID_CLIENT) : "N/A",
+ client_entry->data.status, server_entry ?
+ server_entry->server_name ? server_entry->server_name :
+ "N/A" : "local");
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ if (silc_idcache_get_all(silcd->global_list->clients, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nClients in global-list:\n");
+ c = 1;
+ while (id_cache) {
+ client_entry = (SilcClientEntry)id_cache->context;
+ server_entry = client_entry->router;
+ fprintf(fdd, " %d: name %s id %s status 0x%x from %s\n", c,
+ client_entry->nickname ? client_entry->nickname :
+ (unsigned char *)"N/A", client_entry->id ?
+ silc_id_render(client_entry->id, SILC_ID_CLIENT) : "N/A",
+ client_entry->data.status, server_entry ?
+ server_entry->server_name ? server_entry->server_name :
+ "N/A" : "local");
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ if (silc_idcache_get_all(silcd->local_list->channels, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nChannels in local-list:\n");
+ c = 1;
+ while (id_cache) {
+ channel_entry = (SilcChannelEntry)id_cache->context;
+ fprintf(fdd, " %d: name %s id %s\n", c,
+ channel_entry->channel_name ? channel_entry->channel_name :
+ "N/A", channel_entry->id ?
+ silc_id_render(channel_entry->id, SILC_ID_CHANNEL) : "N/A");
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ if (silc_idcache_get_all(silcd->global_list->channels, &list)) {
+ if (silc_idcache_list_first(list, &id_cache)) {
+ fprintf(fdd, "\nChannels in global-list:\n");
+ c = 1;
+ while (id_cache) {
+ channel_entry = (SilcChannelEntry)id_cache->context;
+ fprintf(fdd, " %d: name %s id %s\n", c,
+ channel_entry->channel_name ? channel_entry->channel_name :
+ "N/A", channel_entry->id ?
+ silc_id_render(channel_entry->id, SILC_ID_CHANNEL) : "N/A");
+ if (!silc_idcache_list_next(list, &id_cache))
+ break;
+ c++;
+ }
+ }
+ silc_idcache_list_free(list);
+ }
+ }
+#endif
+