#include "irc_string.h"
#include "ircd.h"
#include "numeric.h"
-#include "commio.h"
#include "send.h"
-#include "memory.h"
#include "s_conf.h"
#include "s_newconf.h"
#include "whowas.h"
/*
* stats stuff
*/
-static struct ServerStatistics ircst;
-struct ServerStatistics *ServerStats = &ircst;
+struct ServerStatistics ServerStats;
void
init_stats()
{
- memset(&ircst, 0, sizeof(ircst));
+ /* XXX nothing to do - was ServerStats init -- dwr */
}
/*
* output - NONE
* side effects -
*/
-void
-tstats(struct Client *source_p)
-{
- struct Client *target_p;
- struct ServerStatistics *sp;
- struct ServerStatistics tmp;
- dlink_node *ptr;
-
- sp = &tmp;
- memcpy(sp, ServerStats, sizeof(struct ServerStatistics));
-
- DLINK_FOREACH(ptr, serv_list.head)
- {
- target_p = ptr->data;
-
- sp->is_sbs += target_p->localClient->sendB;
- sp->is_sbr += target_p->localClient->receiveB;
- sp->is_sks += target_p->localClient->sendK;
- sp->is_skr += target_p->localClient->receiveK;
- sp->is_sti += CurrentTime - target_p->localClient->firsttime;
- sp->is_sv++;
- if(sp->is_sbs > 1023)
- {
- sp->is_sks += (sp->is_sbs >> 10);
- sp->is_sbs &= 0x3ff;
- }
- if(sp->is_sbr > 1023)
- {
- sp->is_skr += (sp->is_sbr >> 10);
- sp->is_sbr &= 0x3ff;
- }
- }
-
- DLINK_FOREACH(ptr, lclient_list.head)
- {
- target_p = ptr->data;
-
- sp->is_cbs += target_p->localClient->sendB;
- sp->is_cbr += target_p->localClient->receiveB;
- sp->is_cks += target_p->localClient->sendK;
- sp->is_ckr += target_p->localClient->receiveK;
- sp->is_cti += CurrentTime - target_p->localClient->firsttime;
- sp->is_cl++;
- if(sp->is_cbs > 1023)
- {
- sp->is_cks += (sp->is_cbs >> 10);
- sp->is_cbs &= 0x3ff;
- }
- if(sp->is_cbr > 1023)
- {
- sp->is_ckr += (sp->is_cbr >> 10);
- sp->is_cbr &= 0x3ff;
- }
-
- }
-
- DLINK_FOREACH(ptr, unknown_list.head)
- {
- sp->is_ni++;
- }
-
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :accepts %u refused %u", sp->is_ac, sp->is_ref);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :rejected %u delaying %lu",
- sp->is_rej, dlink_list_length(&delay_exit));
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :nicks being delayed %lu",
- get_nd_count());
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :unknown commands %u prefixes %u",
- sp->is_unco, sp->is_unpf);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :nick collisions %u saves %u unknown closes %u",
- sp->is_kill, sp->is_save, sp->is_ni);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :wrong direction %u empty %u",
- sp->is_wrdi, sp->is_empt);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :numerics seen %u", sp->is_num);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :auth successes %u fails %u",
- sp->is_asuc, sp->is_abad);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :sasl successes %u fails %u",
- sp->is_ssuc, sp->is_sbad);
- sendto_one_numeric(source_p, RPL_STATSDEBUG, "T :Client Server");
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :connected %u %u", sp->is_cl, sp->is_sv);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :bytes sent %d.%uK %d.%uK",
- (int) sp->is_cks, sp->is_cbs,
- (int) sp->is_sks, sp->is_sbs);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :bytes recv %d.%uK %d.%uK",
- (int) sp->is_ckr, sp->is_cbr,
- (int) sp->is_skr, sp->is_sbr);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "T :time connected %d %d",
- (int) sp->is_cti, (int) sp->is_sti);
+void\r
+tstats(struct Client *source_p)\r
+{\r
+ struct Client *target_p;\r
+ struct ServerStatistics sp;\r
+ rb_dlink_node *ptr;\r
+\r
+ memcpy(&sp, &ServerStats, sizeof(struct ServerStatistics));\r
+\r
+ RB_DLINK_FOREACH(ptr, serv_list.head)\r
+ {\r
+ target_p = ptr->data;\r
+\r
+ sp.is_sbs += target_p->localClient->sendB;\r
+ sp.is_sbr += target_p->localClient->receiveB;\r
+ sp.is_sti += rb_current_time() - target_p->localClient->firsttime;\r
+ sp.is_sv++;\r
+ }\r
+\r
+ RB_DLINK_FOREACH(ptr, lclient_list.head)\r
+ {\r
+ target_p = ptr->data;\r
+\r
+ sp.is_cbs += target_p->localClient->sendB;\r
+ sp.is_cbr += target_p->localClient->receiveB;\r
+ sp.is_cti += rb_current_time() - target_p->localClient->firsttime;\r
+ sp.is_cl++;\r
+ }\r
+\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :accepts %u refused %u", \r
+ sp.is_ac, sp.is_ref);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :rejected %u delaying %lu", \r
+ sp.is_rej, delay_exit_length());\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :nicks being delayed %lu", get_nd_count());\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :unknown commands %u prefixes %u",\r
+ sp.is_unco, sp.is_unpf);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :nick collisions %u saves %u unknown closes %u",\r
+ sp.is_kill, sp.is_save, sp.is_ni);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :wrong direction %u empty %u", \r
+ sp.is_wrdi, sp.is_empt);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :numerics seen %u", \r
+ sp.is_num);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :auth successes %u fails %u",\r
+ sp.is_asuc, sp.is_abad);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG, "T :Client Server");\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :connected %u %u",\r
+ sp.is_cl, sp.is_sv);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :bytes sent %lluK %lluK",\r
+ sp.is_cbs / 1024, \r
+ sp.is_sbs / 1024);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :bytes recv %lluK %lluK",\r
+ sp.is_cbr / 1024, \r
+ sp.is_sbr / 1024);\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
+ "T :time connected %lu %lu",\r
+ sp.is_cti, sp.is_sti);\r
}
void
struct Client *target_p;
struct Channel *chptr;
struct Ban *actualBan;
- dlink_node *dlink;
- dlink_node *ptr;
+ rb_dlink_node *rb_dlink;
+ rb_dlink_node *ptr;
int channel_count = 0;
int local_client_conf_count = 0; /* local client conf links */
int users_counted = 0; /* user structs */
int channel_invex = 0;
int channel_quiets = 0;
- size_t wwu = 0; /* whowas users */
int class_count = 0; /* classes */
int conf_count = 0; /* conf lines */
int users_invited_count = 0; /* users invited */
size_t channel_quiet_memory = 0;
size_t away_memory = 0; /* memory used by aways */
+ size_t ww = 0; /* whowas array count */
size_t wwm = 0; /* whowas array memory used */
size_t conf_memory = 0; /* memory used by conf lines */
size_t mem_servers_cached; /* memory used by scache */
size_t total_memory = 0;
- count_whowas_memory(&wwu, &wwm);
+ count_whowas_memory(&ww, &wwm);
- DLINK_FOREACH(ptr, global_client_list.head)
+ RB_DLINK_FOREACH(ptr, global_client_list.head)
{
target_p = ptr->data;
if(MyConnect(target_p))
if(target_p->user)
{
users_counted++;
- users_invited_count += dlink_list_length(&target_p->user->invited);
- user_channels += dlink_list_length(&target_p->user->channel);
+ users_invited_count += rb_dlink_list_length(&target_p->user->invited);
+ user_channels += rb_dlink_list_length(&target_p->user->channel);
if(target_p->user->away)
{
aways_counted++;
}
/* Count up all channels, ban lists, except lists, Invex lists */
- DLINK_FOREACH(ptr, global_channel_list.head)
+ RB_DLINK_FOREACH(ptr, global_channel_list.head)
{
chptr = ptr->data;
channel_count++;
channel_memory += (strlen(chptr->chname) + sizeof(struct Channel));
- channel_users += dlink_list_length(&chptr->members);
- channel_invites += dlink_list_length(&chptr->invites);
+ channel_users += rb_dlink_list_length(&chptr->members);
+ channel_invites += rb_dlink_list_length(&chptr->invites);
- DLINK_FOREACH(dlink, chptr->banlist.head)
+ RB_DLINK_FOREACH(rb_dlink, chptr->banlist.head)
{
- actualBan = dlink->data;
+ actualBan = rb_dlink->data;
channel_bans++;
- channel_ban_memory += sizeof(dlink_node) + sizeof(struct Ban);
+ channel_ban_memory += sizeof(rb_dlink_node) + sizeof(struct Ban);
}
- DLINK_FOREACH(dlink, chptr->exceptlist.head)
+ RB_DLINK_FOREACH(rb_dlink, chptr->exceptlist.head)
{
- actualBan = dlink->data;
+ actualBan = rb_dlink->data;
channel_except++;
- channel_except_memory += (sizeof(dlink_node) + sizeof(struct Ban));
+ channel_except_memory += (sizeof(rb_dlink_node) + sizeof(struct Ban));
}
- DLINK_FOREACH(dlink, chptr->invexlist.head)
+ RB_DLINK_FOREACH(rb_dlink, chptr->invexlist.head)
{
- actualBan = dlink->data;
+ actualBan = rb_dlink->data;
channel_invex++;
- channel_invex_memory += (sizeof(dlink_node) + sizeof(struct Ban));
+ channel_invex_memory += (sizeof(rb_dlink_node) + sizeof(struct Ban));
}
- DLINK_FOREACH(dlink, chptr->quietlist.head)
+ RB_DLINK_FOREACH(rb_dlink, chptr->quietlist.head)
{
- actualBan = dlink->data;
+ actualBan = rb_dlink->data;
channel_quiets++;
- channel_quiet_memory += (sizeof(dlink_node) + sizeof(struct Ban));
+ channel_quiet_memory += (sizeof(rb_dlink_node) + sizeof(struct Ban));
}
}
/* count up all classes */
- class_count = dlink_list_length(&class_list) + 1;
+ class_count = rb_dlink_list_length(&class_list) + 1;
- count_linebuf_memory(&linebuf_count, &linebuf_memory_used);
+ rb_count_rb_linebuf_memory(&linebuf_count, &linebuf_memory_used);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :Users %u(%lu) Invites %u(%lu)",
users_counted,
(unsigned long) users_counted * sizeof(struct User),
users_invited_count,
- (unsigned long) users_invited_count * sizeof(dlink_node));
+ (unsigned long) users_invited_count * sizeof(rb_dlink_node));
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :User channels %u(%lu) Aways %u(%d)",
user_channels,
- (unsigned long) user_channels * sizeof(dlink_node),
+ (unsigned long) user_channels * sizeof(rb_dlink_node),
aways_counted, (int) away_memory);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :Attached confs %u(%lu)",
local_client_conf_count,
- (unsigned long) local_client_conf_count * sizeof(dlink_node));
+ (unsigned long) local_client_conf_count * sizeof(rb_dlink_node));
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :Conflines %u(%d)", conf_count, (int) conf_memory);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :Channel members %u(%lu) invite %u(%lu)",
channel_users,
- (unsigned long) channel_users * sizeof(dlink_node),
+ (unsigned long) channel_users * sizeof(rb_dlink_node),
channel_invites,
- (unsigned long) channel_invites * sizeof(dlink_node));
+ (unsigned long) channel_invites * sizeof(rb_dlink_node));
total_channel_memory = channel_memory +
channel_ban_memory +
- channel_users * sizeof(dlink_node) + channel_invites * sizeof(dlink_node);
-
- sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "z :Whowas users %ld(%ld)",
- (long)wwu, (long) (wwu * sizeof(struct User)));
+ channel_users * sizeof(rb_dlink_node) + channel_invites * sizeof(rb_dlink_node);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
- "z :Whowas array %u(%d)",
- NICKNAMEHISTORYLENGTH, (int) wwm);
+ "z :Whowas array %ld(%ld)",
+ (long)ww, (long)wwm);
- totww = wwu * sizeof(struct User) + wwm;
+ totww = wwm;
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :Hash: client %u(%ld) chan %u(%ld)",
- U_MAX, (long)(U_MAX * sizeof(dlink_list)),
- CH_MAX, (long)(CH_MAX * sizeof(dlink_list)));
+ U_MAX, (long)(U_MAX * sizeof(rb_dlink_list)),
+ CH_MAX, (long)(CH_MAX * sizeof(rb_dlink_list)));
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :linebuf %ld(%ld)",
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"z :hostname hash %d(%ld)",
- HOST_MAX, (long)HOST_MAX * sizeof(dlink_list));
+ HOST_MAX, (long)HOST_MAX * sizeof(rb_dlink_list));
total_memory = totww + total_channel_memory + conf_memory +
class_count * sizeof(struct Class);