ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/modules/m_stats.c
(Generate patch)

Comparing ircd-hybrid/trunk/modules/m_stats.c (file contents):
Revision 3516 by michael, Mon May 12 17:34:43 2014 UTC vs.
Revision 3573 by michael, Fri May 16 17:09:50 2014 UTC

# Line 271 | Line 271 | stats_usage(struct Client *source_p, int
271    if (rup == 0)
272      rup = 1;
273  
274 <  sendto_one(source_p,
275 <             ":%s %d %s R :CPU Secs %d:%02d User %d:%02d System %d:%02d",
276 <             me.name, RPL_STATSDEBUG, source_p->name, (int)(secs/60), (int)(secs%60),
277 <             (int)(rus.ru_utime.tv_sec/60), (int)(rus.ru_utime.tv_sec%60),
278 <             (int)(rus.ru_stime.tv_sec/60), (int)(rus.ru_stime.tv_sec%60));
279 <  sendto_one(source_p, ":%s %d %s R :RSS %ld ShMem %ld Data %ld Stack %ld",
280 <             me.name, RPL_STATSDEBUG, source_p->name, rus.ru_maxrss,
281 <             (rus.ru_ixrss / rup), (rus.ru_idrss / rup),
282 <             (rus.ru_isrss / rup));
283 <  sendto_one(source_p, ":%s %d %s R :Swaps %d Reclaims %d Faults %d",
284 <             me.name, RPL_STATSDEBUG, source_p->name, (int)rus.ru_nswap,
285 <             (int)rus.ru_minflt, (int)rus.ru_majflt);
286 <  sendto_one(source_p, ":%s %d %s R :Block in %d out %d",
287 <             me.name, RPL_STATSDEBUG, source_p->name, (int)rus.ru_inblock,
288 <             (int)rus.ru_oublock);
289 <  sendto_one(source_p, ":%s %d %s R :Msg Rcv %d Send %d",
290 <             me.name, RPL_STATSDEBUG, source_p->name, (int)rus.ru_msgrcv,
291 <             (int)rus.ru_msgsnd);
292 <  sendto_one(source_p, ":%s %d %s R :Signals %d Context Vol. %d Invol %d",
293 <             me.name, RPL_STATSDEBUG, source_p->name, (int)rus.ru_nsignals,
294 <             (int)rus.ru_nvcsw, (int)rus.ru_nivcsw);
274 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
275 >                     "R :CPU Secs %d:%02d User %d:%02d System %d:%02d",
276 >                     (int)(secs/60), (int)(secs%60),
277 >                     (int)(rus.ru_utime.tv_sec/60), (int)(rus.ru_utime.tv_sec%60),
278 >                     (int)(rus.ru_stime.tv_sec/60), (int)(rus.ru_stime.tv_sec%60));
279 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
280 >                     "R :RSS %ld ShMem %ld Data %ld Stack %ld",
281 >                     rus.ru_maxrss,
282 >                     (rus.ru_ixrss / rup), (rus.ru_idrss / rup),
283 >                     (rus.ru_isrss / rup));
284 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
285 >                     "R :Swaps %d Reclaims %d Faults %d",
286 >                     (int)rus.ru_nswap,
287 >                     (int)rus.ru_minflt, (int)rus.ru_majflt);
288 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
289 >                     "R :Block in %d out %d",
290 >                     (int)rus.ru_inblock,
291 >                     (int)rus.ru_oublock);
292 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
293 >                     "R :Msg Rcv %d Send %d",
294 >                     (int)rus.ru_msgrcv,
295 >                     (int)rus.ru_msgsnd);
296 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
297 >                     "R :Signals %d Context Vol. %d Invol %d",
298 >                     (int)rus.ru_nsignals,
299 >                     (int)rus.ru_nvcsw, (int)rus.ru_nivcsw);
300   }
301  
302   static void
# Line 449 | Line 454 | stats_memory(struct Client *source_p, in
454    whowas_count_memory(&wwu, &wwm);
455    watch_count_memory(&watch_list_headers, &watch_list_memory);
456  
457 <  sendto_one(source_p, ":%s %d %s z :WATCH headers %u(%llu) entries %d(%u)",
458 <             me.name, RPL_STATSDEBUG, source_p->name, watch_list_headers,
459 <             watch_list_memory, watch_list_entries,
460 <             watch_list_entries * sizeof(dlink_node) * 2);
461 <
462 <  sendto_one(source_p, ":%s %d %s z :Clients %u(%u)",
463 <             me.name, RPL_STATSDEBUG, source_p->name, users_counted,
464 <             (users_counted * sizeof(struct Client)));
465 <
466 <  sendto_one(source_p, ":%s %d %s z :User aways %u",
467 <             me.name, RPL_STATSDEBUG, source_p->name,
468 <             aways_counted);
469 <
470 <  sendto_one(source_p, ":%s %d %s z :Attached confs %u(%llu)",
471 <             me.name, RPL_STATSDEBUG, source_p->name,
472 <             local_client_conf_count,
473 <             (unsigned long long)(local_client_conf_count * sizeof(dlink_node)));
474 <
475 <  sendto_one(source_p, ":%s %d %s z :Resv channels %u(%lu) nicks %u(%lu)",
476 <             me.name, RPL_STATSDEBUG, source_p->name,
477 <             dlink_list_length(&cresv_items),
478 <             dlink_list_length(&cresv_items) * sizeof(struct MaskItem),
479 <             dlink_list_length(&nresv_items),
480 <             dlink_list_length(&nresv_items) * sizeof(struct MaskItem));
481 <
482 <  sendto_one(source_p, ":%s %d %s z :Classes %u(%llu)",
483 <             me.name, RPL_STATSDEBUG, source_p->name,
484 <             class_count, (unsigned long long)(class_count * sizeof(struct ClassItem)));
485 <
486 <  sendto_one(source_p, ":%s %d %s z :Channels %u(%llu) Topics %u(%u)",
487 <             me.name, RPL_STATSDEBUG, source_p->name,
488 <             dlink_list_length(&global_channel_list),
489 <             channel_memory, topic_count, topic_count *
490 <             (TOPICLEN + 1 + USERHOST_REPLYLEN));
491 <
492 <  sendto_one(source_p, ":%s %d %s z :Bans %u(%llu)",
493 <             me.name, RPL_STATSDEBUG, source_p->name,
494 <             channel_bans, channel_ban_memory);
495 <
496 <  sendto_one(source_p, ":%s %d %s z :Exceptions %u(%llu)",
497 <             me.name, RPL_STATSDEBUG, source_p->name,
498 <             channel_except, channel_except_memory);
499 <
500 <  sendto_one(source_p, ":%s %d %s z :Invex %u(%llu)",
501 <             me.name, RPL_STATSDEBUG, source_p->name,
502 <             channel_invex, channel_invex_memory);
503 <
504 <  sendto_one(source_p, ":%s %d %s z :Channel members %u(%llu) invites %u(%llu)",
505 <             me.name, RPL_STATSDEBUG, source_p->name, channel_members,
506 <             (unsigned long long)(channel_members * sizeof(struct Membership)),
507 <             channel_invites, (unsigned long long)channel_invites *
508 <             sizeof(dlink_node) * 2);
457 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
458 >                     "z :WATCH headers %u(%llu) entries %d(%u)",
459 >                     watch_list_headers,
460 >                     watch_list_memory, watch_list_entries,
461 >                     watch_list_entries * sizeof(dlink_node) * 2);
462 >
463 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
464 >                     "z :Clients %u(%u)",
465 >                     users_counted,
466 >                     (users_counted * sizeof(struct Client)));
467 >
468 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
469 >                     "z :User aways %u", aways_counted);
470 >
471 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
472 >                     "z :Attached confs %u(%llu)",
473 >                     local_client_conf_count,
474 >                     (unsigned long long)(local_client_conf_count * sizeof(dlink_node)));
475 >
476 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
477 >                     "z :Resv channels %u(%lu) nicks %u(%lu)",
478 >                     dlink_list_length(&cresv_items),
479 >                     dlink_list_length(&cresv_items) * sizeof(struct MaskItem),
480 >                     dlink_list_length(&nresv_items),
481 >                     dlink_list_length(&nresv_items) * sizeof(struct MaskItem));
482 >
483 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
484 >                     "z :Classes %u(%llu)",
485 >                     class_count, (unsigned long long)(class_count * sizeof(struct ClassItem)));
486 >
487 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
488 >                     "z :Channels %u(%llu) Topics %u(%u)",
489 >                     dlink_list_length(&global_channel_list),
490 >                     channel_memory, topic_count, topic_count *
491 >                     (TOPICLEN + 1 + USERHOST_REPLYLEN));
492 >
493 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
494 >                     "z :Bans %u(%llu)",
495 >                     channel_bans, channel_ban_memory);
496 >
497 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
498 >                     "z :Exceptions %u(%llu)",
499 >                     channel_except, channel_except_memory);
500 >
501 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
502 >                     "z :Invex %u(%llu)",
503 >                     channel_invex, channel_invex_memory);
504 >
505 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
506 >                     "z :Channel members %u(%llu) invites %u(%llu)",
507 >                     channel_members,
508 >                     (unsigned long long)(channel_members * sizeof(struct Membership)),
509 >                     channel_invites, (unsigned long long)channel_invites * sizeof(dlink_node) * 2);
510  
511    total_channel_memory = channel_memory + channel_ban_memory +
512                           channel_members * sizeof(struct Membership) +
513                           (channel_invites * sizeof(dlink_node)*2);
514  
515 <  sendto_one(source_p, ":%s %d %s z :Safelist %u(%llu)",
516 <             me.name, RPL_STATSDEBUG, source_p->name,
517 <             safelist_count, safelist_memory);
518 <
519 <  sendto_one(source_p, ":%s %d %s z :Whowas users %u(%llu)",
520 <             me.name, RPL_STATSDEBUG, source_p->name,
521 <             wwu, (unsigned long long)(wwu * sizeof(struct Client)));
522 <
523 <  sendto_one(source_p, ":%s %d %s z :Whowas array %u(%llu)",
524 <             me.name, RPL_STATSDEBUG, source_p->name,
525 <             NICKNAMEHISTORYLENGTH, wwm);
515 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
516 >                     "z :Safelist %u(%llu)",
517 >                     safelist_count, safelist_memory);
518 >
519 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
520 >                     "z :Whowas users %u(%llu)",
521 >                     wwu, (unsigned long long)(wwu * sizeof(struct Client)));
522 >
523 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
524 >                     "z :Whowas array %u(%llu)",
525 >                     NICKNAMEHISTORYLENGTH, wwm);
526  
527    totww = wwu * sizeof(struct Client) + wwm;
528  
529    motd_memory_count(source_p);
530    count_ip_hash(&number_ips_stored,&mem_ips_stored);
531 <  sendto_one(source_p, ":%s %d %s z :iphash %u(%llu)",
532 <             me.name, RPL_STATSDEBUG, source_p->name,
533 <             number_ips_stored, mem_ips_stored);
531 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
532 >                     "z :iphash %u(%llu)",
533 >                     number_ips_stored, mem_ips_stored);
534  
535    total_memory = totww + total_channel_memory + conf_memory + class_count *
536                   sizeof(struct ClassItem);
537 <  sendto_one(source_p, ":%s %d %s z :Total: whowas %llu channel %llu conf %llu",
538 <             me.name, RPL_STATSDEBUG, source_p->name, totww,
539 <             total_channel_memory, conf_memory);
537 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
538 >                     "z :Total: whowas %llu channel %llu conf %llu",
539 >                     totww, total_channel_memory, conf_memory);
540  
541    local_client_memory_used = local_client_count*(sizeof(struct Client) + sizeof(struct LocalUser));
542    total_memory += local_client_memory_used;
543 <  sendto_one(source_p, ":%s %d %s z :Local client Memory in use: %u(%llu)",
544 <             me.name, RPL_STATSDEBUG, source_p->name, local_client_count,
545 <             local_client_memory_used);
543 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
544 >                     "z :Local client Memory in use: %u(%llu)",
545 >                     local_client_count, local_client_memory_used);
546  
547    remote_client_memory_used = remote_client_count * sizeof(struct Client);
548    total_memory += remote_client_memory_used;
549 <  sendto_one(source_p, ":%s %d %s z :Remote client Memory in use: %u(%llu)",
550 <             me.name, RPL_STATSDEBUG, source_p->name, remote_client_count,
551 <             remote_client_memory_used);
552 <
553 <  sendto_one(source_p,
554 <             ":%s %d %s z :TOTAL: %llu",
555 <             me.name, RPL_STATSDEBUG, source_p->name,
556 <             total_memory);
549 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
550 >                     "z :Remote client Memory in use: %u(%llu)",
551 >                     remote_client_count, remote_client_memory_used);
552 >
553 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
554 >                     "z :TOTAL: %llu",
555 >                     me.name, RPL_STATSDEBUG, source_p->name,
556 >                     total_memory);
557   }
558  
559   static void
# Line 1082 | Line 1088 | stats_operedup(struct Client *source_p,
1088        strlcpy(buf, "n/a", sizeof(buf));
1089  
1090      if (MyClient(source_p) && HasUMode(source_p, UMODE_OPER))
1091 <      sendto_one(source_p, ":%s %d %s p :[%c][%s] %s (%s@%s) Idle: %s",
1092 <                 ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1093 <                 HasUMode(target_p, UMODE_ADMIN) ? 'A' : 'O',
1094 <                 oper_privs_as_string(target_p->localClient->operflags),
1095 <                 target_p->name, target_p->username, target_p->host, buf);
1091 >      sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1092 >                         "p :[%c][%s] %s (%s@%s) Idle: %s",
1093 >                         HasUMode(target_p, UMODE_ADMIN) ? 'A' : 'O',
1094 >                         oper_privs_as_string(target_p->localClient->operflags),
1095 >                         target_p->name, target_p->username, target_p->host, buf);
1096      else
1097 <      sendto_one(source_p, ":%s %d %s p :[%c] %s (%s@%s) Idle: %s",
1098 <                 ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1099 <                 HasUMode(target_p, UMODE_ADMIN) ? 'A' : 'O',
1100 <                 target_p->name, target_p->username, target_p->host, buf);
1097 >      sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1098 >                         "p :[%c] %s (%s@%s) Idle: %s",
1099 >                         HasUMode(target_p, UMODE_ADMIN) ? 'A' : 'O',
1100 >                         target_p->name, target_p->username, target_p->host, buf);
1101      ++opercount;
1102    }
1103  
1104 <  sendto_one(source_p, ":%s %d %s p :%u OPER(s)",
1105 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p), opercount);
1104 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1105 >                     "p :%u OPER(s)", opercount);
1106   }
1107  
1108   static void
# Line 1159 | Line 1165 | stats_tstats(struct Client *source_p, in
1165  
1166    sp->is_ni += dlink_list_length(&unknown_list);
1167  
1168 <  sendto_one(source_p, ":%s %d %s T :accepts %u refused %u",
1169 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_ac, sp->is_ref);
1170 <  sendto_one(source_p, ":%s %d %s T :unknown commands %u prefixes %u",
1171 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_unco, sp->is_unpf);
1172 <  sendto_one(source_p, ":%s %d %s T :nick collisions %u unknown closes %u",
1173 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_kill, sp->is_ni);
1174 <  sendto_one(source_p, ":%s %d %s T :wrong direction %u empty %u",
1175 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_wrdi, sp->is_empt);
1176 <  sendto_one(source_p, ":%s %d %s T :numerics seen %u",
1177 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_num);
1178 <  sendto_one(source_p, ":%s %d %s T :auth successes %u fails %u",
1179 <             me.name, RPL_STATSDEBUG, source_p->name, sp->is_asuc, sp->is_abad);
1180 <  sendto_one(source_p, ":%s %d %s T :Client Server",
1181 <             me.name, RPL_STATSDEBUG, source_p->name);
1182 <
1183 <  sendto_one(source_p, ":%s %d %s T :connected %u %u",
1184 <             me.name, RPL_STATSDEBUG, source_p->name,
1185 <             (unsigned int)sp->is_cl,
1186 <             (unsigned int)sp->is_sv);
1187 <  sendto_one(source_p, ":%s %d %s T :bytes sent %llu %llu",
1188 <             me.name, RPL_STATSDEBUG, source_p->name,
1189 <             sp->is_cbs, sp->is_sbs);
1190 <  sendto_one(source_p, ":%s %d %s T :bytes recv %llu %llu",
1191 <             me.name, RPL_STATSDEBUG, source_p->name,
1192 <             sp->is_cbr, sp->is_sbr);
1193 <  sendto_one(source_p, ":%s %d %s T :time connected %u %u",
1194 <             me.name, RPL_STATSDEBUG, source_p->name,
1195 <             (unsigned int)sp->is_cti,
1196 <             (unsigned int)sp->is_sti);
1168 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1169 >                     "T :accepts %u refused %u",
1170 >                     sp->is_ac, sp->is_ref);
1171 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1172 >                     "T :unknown commands %u prefixes %u",
1173 >                     sp->is_unco, sp->is_unpf);
1174 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1175 >                     "T :nick collisions %u unknown closes %u",
1176 >                     sp->is_kill, sp->is_ni);
1177 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1178 >                     "T :wrong direction %u empty %u",
1179 >                     sp->is_wrdi, sp->is_empt);
1180 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1181 >                     "T :numerics seen %u",
1182 >                     sp->is_num);
1183 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1184 >                     "T :auth successes %u fails %u",
1185 >                     sp->is_asuc, sp->is_abad);
1186 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1187 >                     "T :Client Server");
1188 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1189 >                     ":%s %d %s T :connected %u %u",
1190 >                     (unsigned int)sp->is_cl,
1191 >                     (unsigned int)sp->is_sv);
1192 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1193 >                     "T :bytes sent %llu %llu",
1194 >                     sp->is_cbs, sp->is_sbs);
1195 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1196 >                     "T :bytes recv %llu %llu",
1197 >                     sp->is_cbr, sp->is_sbr);
1198 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1199 >                     "T :time connected %u %u",
1200 >                     (unsigned int)sp->is_cti,
1201 >                     (unsigned int)sp->is_sti);
1202   }
1203  
1204   static void
# Line 1229 | Line 1240 | stats_servers(struct Client *source_p, i
1240    {
1241      const struct Client *target_p = ptr->data;
1242  
1243 <    sendto_one(source_p, ":%s %d %s v :%s (%s!%s@%s) Idle: %d",
1244 <               ID_or_name(&me, source_p), RPL_STATSDEBUG,
1245 <               ID_or_name(source_p, source_p), target_p->name,
1246 <               (target_p->serv->by[0] ? target_p->serv->by : "Remote."),
1247 <               "*", "*", (int)(CurrentTime - target_p->localClient->lasttime));
1243 >    sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1244 >                       "v :%s (%s!%s@%s) Idle: %d",
1245 >                       target_p->name,
1246 >                       (target_p->serv->by[0] ? target_p->serv->by : "Remote."),
1247 >                       "*", "*", (int)(CurrentTime - target_p->localClient->lasttime));
1248    }
1249  
1250 <  sendto_one(source_p, ":%s %d %s v :%u Server(s)", ID_or_name(&me, source_p),
1251 <             RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1241 <             dlink_list_length(&serv_list));
1250 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1251 >                     "v :%u Server(s)", dlink_list_length(&serv_list));
1252   }
1253  
1254   static void
# Line 1308 | Line 1318 | stats_servlinks(struct Client *source_p,
1318    sendB >>= 10;
1319    recvB >>= 10;
1320  
1321 <  sendto_one(source_p, ":%s %d %s ? :%u total server(s)",
1322 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p), dlink_list_length(&serv_list));
1323 <  sendto_one(source_p, ":%s %d %s ? :Sent total: %7.2f %s",
1324 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1325 <             _GMKv(sendB), _GMKs(sendB));
1326 <  sendto_one(source_p, ":%s %d %s ? :Recv total: %7.2f %s",
1317 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1318 <             _GMKv(recvB), _GMKs(recvB));
1321 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT, "? :%u total server(s)",
1322 >                     dlink_list_length(&serv_list));
1323 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT, "? :Sent total: %7.2f %s",
1324 >                     _GMKv(sendB), _GMKs(sendB));
1325 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT, "? :Recv total: %7.2f %s",
1326 >                     _GMKv(recvB), _GMKs(recvB));
1327  
1328    uptime = (CurrentTime - me.localClient->since);
1329  
1330 <  sendto_one(source_p, ":%s %d %s ? :Server send: %7.2f %s (%4.1f K/s)",
1331 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1332 <             _GMKv((me.localClient->send.bytes>>10)),
1333 <             _GMKs((me.localClient->send.bytes>>10)),
1334 <             (float)((float)((me.localClient->send.bytes) >> 10) /
1335 <             (float)uptime));
1336 <  sendto_one(source_p, ":%s %d %s ? :Server recv: %7.2f %s (%4.1f K/s)",
1337 <             ID_or_name(&me, source_p), RPL_STATSDEBUG, ID_or_name(source_p, source_p),
1338 <             _GMKv((me.localClient->recv.bytes>>10)),
1339 <             _GMKs((me.localClient->recv.bytes>>10)),
1340 <             (float)((float)((me.localClient->recv.bytes) >> 10) /
1341 <             (float)uptime));
1330 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1331 >                     "? :Server send: %7.2f %s (%4.1f K/s)",
1332 >                     _GMKv((me.localClient->send.bytes>>10)),
1333 >                     _GMKs((me.localClient->send.bytes>>10)),
1334 >                     (float)((float)((me.localClient->send.bytes) >> 10) /
1335 >                     (float)uptime));
1336 >  sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
1337 >                     "? :Server recv: %7.2f %s (%4.1f K/s)",
1338 >                     _GMKv((me.localClient->recv.bytes>>10)),
1339 >                     _GMKs((me.localClient->recv.bytes>>10)),
1340 >                     (float)((float)((me.localClient->recv.bytes) >> 10) /
1341 >                     (float)uptime));
1342   }
1343  
1344   /* parse_stats_args()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines