SilcUInt32 conn_failures; /* Connection failure */
SilcUInt32 auth_attempts; /* Authentication attempts */
SilcUInt32 auth_failures; /* Authentication failures */
- SilcUInt32 packets_sent; /* Sent packets */
- SilcUInt32 packets_received; /* Received packets */
+ SilcUInt32 packets_sent; /* Sent SILC packets */
+ SilcUInt32 packets_received; /* Received SILC packets */
} SilcServerStatistics;
/*
unsigned int backup_router : 1; /* Set if this is backup router */
unsigned int backup_primary : 1; /* Set if we've switched our primary
router to a backup router. */
+ unsigned int wait_backup : 1; /* Set if we are waiting for backup
+ router to connect to us. */
SilcServerEntry router; /* Pointer to the primary router */
unsigned long router_connect; /* Time when router was connected */
/* Return TRUE if a packet must be broadcasted (router broadcasts) */
#define SILC_BROADCAST(server) (server->server_type == SILC_ROUTER)
+/* Return TRUE if entry is locally connected or local to us */
+#define SILC_IS_LOCAL(entry) \
+ (((SilcIDListData)entry)->status & SILC_IDLIST_STATUS_LOCAL)
+
/* Registers generic task for file descriptor for reading from network and
writing to network. As being generic task the actual task is allocated
only once and after that the same task applies to all registered fd's. */
#define SILC_OPER_STATS_UPDATE(c, type, mod) \
do { \
if ((c)->mode & (mod)) { \
- if ((c)->connection) \
+ if (SILC_IS_LOCAL((c))) \
server->stat.my_ ## type ## _ops--; \
if (server->server_type == SILC_ROUTER) \
server->stat. type ## _ops--; \
do { \
if (client->mode & (mod)) { \
if (!(mode & (mod))) { \
- if (client->connection) \
+ if (SILC_IS_LOCAL(client)) \
server->stat.my_ ## oper ## _ops--; \
if (server->server_type == SILC_ROUTER) \
server->stat. oper ## _ops--; \
} \
} else { \
if (mode & (mod)) { \
- if (client->connection) \
+ if (SILC_IS_LOCAL(client)) \
server->stat.my_ ## oper ## _ops++; \
if (server->server_type == SILC_ROUTER) \
server->stat. oper ## _ops++; \