Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2002 Pekka Riikonen
+ Copyright (C) 1997 - 2003 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
STAT_OUTPUT(" Authentication failures : %d", silcd->stat.auth_failures);
STAT_OUTPUT(" Packets sent : %d", silcd->stat.packets_sent);
STAT_OUTPUT(" Packets received : %d", silcd->stat.packets_received);
+ STAT_OUTPUT(" Connections : %d", silcd->stat.conn_num);
#undef STAT_OUTPUT
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",
+ fprintf(fdd, " primary router : %s\n",
silcd->router->server_name ? silcd->router->server_name : "");
/* Dump socket connections */
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) {
client_entry = (SilcClientEntry)id_cache->context;
- fprintf(fdd, " %d: name %s id %s status 0x%x\n", c,
+ 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);
+ 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++;
c = 1;
while (id_cache) {
client_entry = (SilcClientEntry)id_cache->context;
- fprintf(fdd, " %d: name %s id %s status 0x%x\n", c,
+ 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);
+ 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++;
fclose(fdd);
}
+#ifdef SILC_DEBUG
+
typedef struct {
int level;
const char *string;
break;
}
}
+#endif /* SILC_DEBUG */
/* This function should not be called directly but through the appropriate
wrapper macro defined in server.h */
printf("SILCd Secure Internet Live Conferencing daemon, "
"version %s (base: SILC Toolkit %s)\n",
silc_dist_version, silc_version);
- printf("(c) 1997 - 2002 Pekka Riikonen "
+ printf("(c) 1997 - 2005 Pekka Riikonen "
"<priikone@silcnet.org>\n");
exit(0);
break;
if (ret == FALSE)
goto fail;
- /* Register default crypto stuff since we are going to need them
+ /* Register default crypto stuff since we are going to need them
in the configuration file parsing phase */
silc_cipher_register_default();
silc_pkcs_register_default();
if (silc_server_init(silcd) == FALSE)
goto fail;
- /* Ignore SIGPIPE */
+ /* Ignore some signals */
sa.sa_handler = SIG_IGN;
sa.sa_flags = 0;
sigemptyset(&sa.sa_mask);
- sigaction(SIGPIPE, &sa, NULL);
+#if defined(SIGPIPE)
+ sigaction(SIGPIPE, &sa, NULL); /* Ignore broken pipes */
+#endif /* SIGPIPE*/
+#if defined(SIGXFSZ)
+ sigaction(SIGXFSZ, &sa, NULL); /* Ignore file limit exceeds */
+#endif /* SIGXFSZ */
+#if defined(SIGXCPU)
+ sigaction(SIGXCPU, &sa, NULL); /* Ignore CPU time limit exceeds */
+#endif /* SIGXCPU */
+
+ /* Handle specificly some other signals. */
sa.sa_handler = signal_handler;
sigaction(SIGHUP, &sa, NULL);
sigaction(SIGTERM, &sa, NULL);